我可以从另一个模块导入一个模块,但我不能从 python 中的 main 导入它

时间:2021-05-10 17:00:33

标签: python import module python-import sys

我在为项目设置环境时遇到问题。

我想要这个结构来满足一些要求:

lib
\__module_folder_1
   \_module_1.py
\__module_folder_2
   \_module_2.py
...
script
\__ script_folder_1
   \_ main_1.py
\__ script_folder_2
   \_ main_2.py
...

所以我在 .pth 中创建了一个新的 C:\Python39\Lib\site-packages\random-name.pth 文件 我使用以下方法验证它是否包含在路径中:

import sys
print(sys.path)

输出我在 .pth 文件中写的路径。输出示例:

['C:\\myDir\\WhichContainsLibFolder, 'C:\\Python39\\python39.zip', 'C:\\Python39\\DLLs', 'C:\\Python39\\lib', 'C:\\Python39'
'C:\\Python39\\lib\\site-packages' 'C:\\Python39\\lib\\site-packages\\win32', 'C:\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Python39\\lib\\site-packages\\Pythonwin']

所以现在我尝试从 module_2 导入 module_1:

module_2.py

import module_folder_1.module_1 as importTest 

我将 main_1 放在与脚本文件夹相同的级别:

lib
\__module_folder_1
   \_module_1.py
\__module_folder_2
   \_module_2.py
main_1.py <----- THIS
script
\__ script_folder_1
   \_ 
\__ script_folder_2
   \_ main_2.py
...

然后我导入 main 1 模块 2 使用相对路径,忽略我写的 .pth file:

main.py

import lib.module_folder_2.module_2 as moduleImportTest

这是有效的。 module_2 可以使用我通过 .pth 添加到 sys.path 的路径访问 module_1。

现在我将 main.py 移到我想要的原始文件夹中,即 script_folder_1 中问题开头的那个。

而且我无法再使用与库中相同的导入来访问 module_2

main_1.py

import module_folder_2.module_2 as moduleImportTest

我收到错误:

ModuleNotFoundError: No module named 'module_folder_2.module_2'

当我尝试使用阻止脚本工作的 sys.path 导入脚本和模块时,脚本和模块之间有什么变化?

0 个答案:

没有答案