python install wheel导致导入错误

时间:2019-01-11 11:43:12

标签: python-3.x pip python-wheel

我想制作一个车轮二进制发行版,安装它,然后将其导入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文件中指定的目录。

3 个答案:

答案 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