Python:包目录不存在

新手上路,请多包涵

我正在尝试使用以下 setup.py 文件在 Windows 10 中安装 python 包。

 """Setup file for uhd module"""

from setuptools import setup

setup(name='uhd',
      version='3.14.0',
      description='Universal Software Radio Peripheral (USRP) Hardware Driver Python API',
      classifiers=[
          'Development Status :: 4 - Beta',
          'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
          'Programming Language :: C++',
          'Programming Language :: Python',
          'Topic :: System :: Hardware :: Hardware Drivers',
      ],
      keywords='SDR UHD USRP',
      author='Ettus Research',
      author_email='packages@ettus.com',
      url='https://www.ettus.com/',
      license='GPLv3',
      package_dir={'': 'C:/Users/bcollins/UHD_PY/uhd/host/build/python'},
      package_data={'uhd': ['*.so']},
      zip_safe=False,
      packages=['uhd'],
      install_requires=['numpy'])

我使用命令执行脚本

python setup.py install

我从包含 setup.py 文件的目录执行此操作。

这将返回以下错误

error: package directory 'C:Users\bcollins\UHD_PY\uhd\host\build\python\uhd' does not exist

不过在该位置有一个名为“uhd”的文件夹。该文件夹包含 __init__.py 文件

如果脚本不在寻找这个文件夹,它在寻找什么?

我在这方面并不完全有经验,但我最好的猜测是它在该位置的“uhd”文件夹中寻找 .so 文件,但我不确定。

我正在使用 python 2.7。

原文由 b.collins 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答

package_dir 必须是相对路径,而不是绝对路径。 setuptools 下的 distutils 层 试图 拒绝绝对路径,但 C: 混淆了它。它最终将您的路径转换为

C:Users\bcollins\UHD_PY\uhd\host\build\python\uhd

请注意 C:Users 之间缺少的反斜杠。这个路径是相对于你当前C盘工作目录的( windows驱动处理很奇怪),相对于你的工作目录,这个路径是无效的。

原文由 user2357112 发布,翻译遵循 CC BY-SA 4.0 许可协议

这没有回答原始问题,但这是我修复相同错误的方式。

我有:

 from setuptools import setup, find_packages

setup(
    ...
    packages=find_packages('src', exclude=['test']),
    ...
)

我已经添加了 src 参数,因为我的包位于 src ,但事实证明 find_packages 已经足够聪明了。

删除第一个参数:

 from setuptools import setup, find_packages

setup(
    ...
    packages=find_packages(exclude=['test']),
    ...
)

这是在 Python 3.5 上,但我想它适用于大多数其他版本。

原文由 kelloti 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题