我正在创建一个 python 3.9 程序并希望在本地安装包。所以我的项目设置方式是这样的:
__main__.py
test.py
requirements.txt
lib/
__init__.py
在我的 requirements.txt 文件中,我有 3 行:
colorama==0.2.2
click==8.0.3
pendulum==2.1.2
然后我运行:python -m pip install -r requirements.txt -t ./lib
这会在 lib 目录中安装所有包和依赖项。
然后我在 test.py 文件的顶部导入模块:
from lib import colorama
from lib import click
from lib import pendulum
在进行一些测试时,我发现 colorama 工作正常。我将在一个简单的测试中使用它:
print(colorama.Fore.BLUE + "Hello, World!")
. 控制台中的文本为蓝色,一切正常。
然后我尝试使用其他包,我得到 ModuleNotFoundError 异常:
print(pendulum.now('Europe/Paris'))
Exception has occurred: ModuleNotFoundError - No module named 'pendulum'
这来自它自己的文件之一。
当我使用 Click 时也会发生同样的事情,但它有点不同。我会得到相同的 ModuleNotFound 异常,但它是因为它自己对 Colorama 的依赖。我不认为这与我也在导入 Colorama 的事实有关,因为如果我卸载我会得到同样的错误。
我也用 python-docx 包试过这个。我将 python-docx==0.8.11 添加到 requirements.txt 文件中,然后发出与上面相同的命令以安装到我的本地 lib 目录。它似乎安装得很好。我看到了 docx 目录及其所有依赖项。然后我导入from lib import docx
然后在 test.py 中做一些简单的事情:
doc = docx.Document()
然后得到 ModuleNotFound 错误:文件 "C:\Users\name\Development\python\test-local-package\lib\docx_ init _.py", line 3, in (Current frame) No Module named 'docx'
有谁知道我做错了什么?