我正在通过pyenv virtualenv
创建的虚拟环境中工作,我的文件夹结构如下所示
ProjectFolder (virtual env)
Subfolder
modulea.py
__init__.py
main.py
我要调用main.py
中的,该函数在modulea.py中定义。但是,
from Subfolder.modulea import function
产生错误
没有名为Subfolder.modulea的模块;子文件夹不是程序包。
当我在虚拟环境之外复制带有一些测试文件的模拟结构时,一切工作正常。另外,当我将modulea.py
移到ProjectFolder中时,导入效果很好。
答案 0 :(得分:0)
以下是可能的解决方法。在目录~/.pyenv/versions/your_virtual_environment/lib/your_python_version/site-packages
中
添加扩展名为.pth
的文件
将所有子文件夹的路径写入此文件,其中包含您要导入的模块。
home/usr/Projects/Projectfolder/Subfolder/
这会将目录添加到python PATH。然后,您可以直接通过from Subfolder.modulea import function
导入导入,而不必通过from modulea import function
导入。
或者,应该在导入之前通过sys.path.append
将子文件夹添加到Python路径中,才能完成相同的工作。
但是,我仍然感到困惑,为什么通常的“ from ... import ...”语法似乎无法在虚拟环境中使用。