python-setup.py sdist bdist_wheel [英] python - setup.py sdist bdist_wheel

查看:268
本文介绍了python-setup.py sdist bdist_wheel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我决定创建一个名为"NsmPY"的小模块.一旦完成了模块背后的代码(可在GitHub上找到),我便开始尝试将这个新模块上传到PyPi.但是,当我运行必要的命令python3 setup.py sdist bdist_wheel时,该程序吐出一个错误:

I decided to create a small little module named "NsmPY". Once I had finished the code behind the module (available on GitHub), I got to work trying to upload this new module to PyPi. However, when I ran the necessary command python3 setup.py sdist bdist_wheel, the program spat out an error:

running sdist
running egg_info
writing nsmpy.egg-info\PKG-INFO
writing dependency_links to nsmpy.egg-info\dependency_links.txt
writing top-level names to nsmpy.egg-info\top_level.txt
reading manifest file 'nsmpy.egg-info\SOURCES.txt'
writing manifest file 'nsmpy.egg-info\SOURCES.txt'
warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md

running check
creating nsmpy-1.0
creating nsmpy-1.0\nsmpy.egg-info
copying files to nsmpy-1.0...
copying setup.cfg -> nsmpy-1.0
copying setup.py -> nsmpy-1.0
copying nsmpy.egg-info\PKG-INFO -> nsmpy-1.0\nsmpy.egg-info
copying nsmpy.egg-info\SOURCES.txt -> nsmpy-1.0\nsmpy.egg-info
copying nsmpy.egg-info\dependency_links.txt -> nsmpy-1.0\nsmpy.egg-info
copying nsmpy.egg-info\top_level.txt -> nsmpy-1.0\nsmpy.egg-info
Writing nsmpy-1.0\setup.cfg
Creating tar archive
removing 'nsmpy-1.0' (and everything under it)
running bdist_wheel
running build
running build_scripts
creating build
creating build\scripts-3.7
error: [Errno 2] No such file or directory: 'nsmpy'

但是,在我的代码中,绝对没有提到文件或目录"nsmpy",即使如此,代码setup.py,setup.cfg和所有其他安装文件也都存储在文件夹"nsmpy"中

However, in my code there is absolutely no mention of the file or directory 'nsmpy', and even so, the code, setup.py, setup.cfg and all other setup files are all stored in the folder 'nsmpy'.

此外,当我最终将其上传到我在PyPi上的帐户(我运行python setup.py sdist)时,它确实起作用了-直到我实际上决定使用pip install nsmpy安装该模块时,它给了我以下错误:

Furthermore, when I finally did upload this to my account on PyPi (I ran python setup.py sdist) it did work - until I actually decided to install the module with pip install nsmpy, it gave me the following errors:

Collecting nsmpy==1.0.0
  Using cached nsmpy-1.0.tar.gz (628 bytes)
Building wheels for collected packages: nsmpy
  Building wheel for nsmpy (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\users\sciencepi\anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\SCIENC~1\AppData\Local\Temp\pip-wheel-mm6p5lwl'
       cwd: C:\Users\SCIENC~1\AppData\Local\Temp\pip-install-98ihityv\nsmpy\
  Complete output (6 lines):
  running bdist_wheel
  running build
  running build_scripts
  creating build
  creating build\scripts-3.7
  error: [Errno 2] No such file or directory: 'nsmpy'
  ----------------------------------------
  ERROR: Failed building wheel for nsmpy
  Running setup.py clean for nsmpy
Failed to build nsmpy
ERROR: Error checking for conflicts.
Traceback (most recent call last):
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 3021, in _dep_map
    return self.__dep_map
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2815, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 3012, in _parsed_pkg_info
    return self._pkg_info
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2815, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_internal\commands\install.py", line 517, in _warn_about_conflicts
    package_set, _dep_info = check_install_conflicts(to_install)
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_internal\operations\check.py", line 114, in check_install_conflicts
    package_set, _ = create_package_set_from_installed()
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_internal\operations\check.py", line 53, in create_package_set_from_installed
    package_set[name] = PackageDetails(dist.version, dist.requires())
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2736, in requires
    dm = self._dep_map
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 3023, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 3032, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 3014, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1420, in get_metadata
    value = self._get(path)
  File "c:\users\sciencepi\anaconda3\lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 1616, in _get
    with open(path, 'rb') as stream:
PermissionError: [Errno 13] Permission denied: 'c:\\users\\sciencepi\\anaconda3\\lib\\site-packages\\tensorflow-2.1.0.dist-info\\METADATA'
Installing collected packages: nsmpy
    Running setup.py install for nsmpy ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\sciencepi\anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\SCIENC~1\AppData\Local\Temp\pip-record-9ap1k2wf\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\users\sciencepi\anaconda3\Include\nsmpy'
         cwd: C:\Users\SCIENC~1\AppData\Local\Temp\pip-install-98ihityv\nsmpy\
    Complete output (6 lines):
    running install
    running build
    running build_scripts
    creating build
    creating build\scripts-3.7
    error: file 'C:\Users\SCIENC~1\AppData\Local\Temp\pip-install-98ihityv\nsmpy\nsmpy' does not exist
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\sciencepi\anaconda3\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\SCIENC~1\\AppData\\Local\\Temp\\pip-install-98ihityv\\nsmpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\SCIENC~1\AppData\Local\Temp\pip-record-9ap1k2wf\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\users\sciencepi\anaconda3\Include\nsmpy' Check the logs for full command output.

是的,我正在使用所有组件的最新模块和最新版本.

And yes, I am using the latest modules and latest versions of everything.

from setuptools import setup

setup(
    name="nsmpy",
    version="1.0.0",
    scripts=['nsmpy'])

推荐答案

setuptools.setup函数的scripts参数应该是文件名列表.因此,在您的情况下,我认为它应显示为:

The scripts parameter of setuptools.setup function should be a list of filenames. So in your case I believe it should read:

setuptools.setup(
    # ...
    scripts=['nsmpy.py'],
    # ...
)

还请注意,scripts参数有些失宠.如今,建议改用console_scripts 入口点,因为它提供了更多最新文档.

Also note that the scripts parameter has somewhat fallen out of favor. It is nowadays recommended to use console_scripts entry points instead, for which there is much more up-to-date documentation available.

参考文献:

  • https://docs.python.org/3/distutils/apiref.html#distutils.core.setup
  • https://docs.python.org/3/distutils/setupscript.html#installing-scripts
  • https://packaging.python.org/guides/distributing-packages-using-setuptools/#scripts
  • https://setuptools.readthedocs.io/en/latest/setuptools.html#automatic-script-creation

这篇关于python-setup.py sdist bdist_wheel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆