我想制作一个车轮二进制发行版,安装它,然后将其导入python中。我的步骤是
python ./my_package/setup.py bdist_wheel
pip install ./dist/*.whl
python -c"import my_package"
这会导致错误:
ImportError: No module named 'my_package'
此外,当我执行pip list
时,还会列出my_package
。
但是,当我运行which my_packge
时,什么也没显示。
当我运行pip install ./my_package/
时,一切正常。
我如何正确组装和安装车轮?
python 3.5版 点版本10.1 车轮版本0.31.1
更新:
当我查看my_package-1.0.0.dist-info中的文件时,top_level.txt
中有一个意外的条目。这是我运行的文件夹的名称
python ./my_package/setup.py bdist_wheel
进入。我相信我的setup.py
坏了。
有关已接受答案的更新:
我接受了下面的答案。但是,我认为最好将cd
简单地放入包目录。如下所述,更改为其他目录会导致在使用-d
标志(即将转轮保存到的目标目录)时出现意外行为。这将相对于setup.py文件中指定的目录。
答案 0 :(得分:1)
如果需要从另一个目录执行安装脚本,请确保在脚本中输入项目目录。
from setuptools import setup
root = os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))
os.chdir(root)
# or using pathlib (Python>=3.4):
import patlib
root = pathlib.Path(__file__).parent
os.chdir(str(root))
setup(...)
答案 1 :(得分:1)
我也有同样的错误,但这是由于我的setup.py没有指定条目“ packages = setuptools.find_packages()”。 没有它,一切都可以很好地构建,但是即使pip显示要安装,您也无法导入任何内容。
答案 2 :(得分:0)
就我而言,为了解决该问题,我只需要升级pip(因为Docker安装了pip 9)。
python3 -m pip install --upgrade pip