无法从子文件夹导入虚拟环境中的本地模块

时间:2019-10-31 11:06:48

标签: python pyenv import-module

我正在通过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中时,导入效果很好。

1 个答案:

答案 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 ...”语法似乎无法在虚拟环境中使用。