【问题标题】:Module not found after installing .whl package locally在本地安装 .whl 包后找不到模块
【发布时间】:2022-01-17 04:21:48
【问题描述】:

我使用 pip 在本地安装了一个 .whl 包:

pip install package_name.whl

现在,当运行时

pip list

软件包显示安装了相关版本。

我检查了 pip 是否链接到正确版本的 python,我使用了:

pip -V

这就是答案:

pip 21.3.1 from /home/username/.local/lib/python3.8/site-packages/pip (python 3.8)

在shell上运行python时:

python3.8

我尝试导入包,这就是答案:

[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'package_name'

我运行时也在python3.8中:

help("modules")

package_name 模块实际上并没有出现。所以?发生了什么事?

我也有 3.5 和 2.7 python 版本,为了确定它是否安装在其他版本中,我在 shell 中做了同样的事情,没有人可以导入包或找到它。 我还尝试使用以下命令安装 .whl 文件:

python3.8 -m pip install package_name.whl

然后在输出中

python3.8 -m pip list

package_name 在那里。但是再次运行时无法导入到python3.8的shell甚至定位它

help("modules")

【问题讨论】:

  • 检查提到的建议here
  • 已经检查过了,可惜没用

标签: python installation pip package python-wheel


【解决方案1】:

已解决:

当我尝试使用 pip 卸载软件包时,会出现此消息:

Found existing installation: package_name 0.0.7
Uninstalling package_name-0.0.7:
  Would remove:
    /home/username/.local/lib/python3.8/site-packages/package_name-0.0.7.dist-info/*
    /home/username/.local/lib/python3.8/site-packages/package_name_2.cpython-38-x86_64-linux-gnu.so
Proceed (Y/n)? y
  Successfully uninstalled package_name-0.0.7

这个包是用 cython 构建的,正如你所见,它依赖于一个 .so 库,其 'package_name_2' 与 'package_name' 的名称不同。

当我跑步时

help("modules")

在python3.8 package_name_2 中实际出现。如果我导入 package_name_2,该库就可以工作。使用 cython 构建 .whl 包时,我认为应该有一些名称依赖项限制在 .so 库中引用 cython 模块,因此,对于其他开发人员,建议:如果您使用 cython 构建 .whl,如果您正在使用共享库,请确保您编译的 lib.so 与假定的 python 包具有相同的名称。

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2020-06-26
    • 2019-01-02
    • 2018-12-16
    • 2021-08-16
    • 2019-08-04
    相关资源
    最近更新 更多