繁体   English   中英

无法在 Python 3 中导入模块

[英]Can't import modules in Python 3

我有一个像

pylib/
    apps/
        main.py
    libs/
        MyClass.py
    __init__.py

其中MyClass.py

class MyClass:
    pass


if __name__ == "__name__":
    obj = MyClass()

main.py我试过

from pylib.libs.MyClass import MyClass
obj = MyClass()

并得到

ModuleNotFoundError: 没有名为“pylib”的模块

from ..libs.MyClass import MyClass
obj = MyClass()

并得到

导入错误:尝试在没有已知父包的情况下进行相对导入

from libs.MyClass import MyClass
obj = MyClass()

并得到

ModuleNotFoundError: 没有名为“libs”的模块

如果有人知道如何修复它,我会很高兴

问题是包含pylib的文件夹不在路径上。 您可以通过将包含文件夹添加到PYTHONPATH环境变量来解决此问题。

➜  apps  python3 main.py        
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from pylib.libs.MyClass import MyClass
ModuleNotFoundError: No module named 'pylib'
➜  apps  cd ..
➜  pylib  cd ..
➜  temp-code  export PYTHONPATH=`pwd`  # This is the fix!
➜  apps  python3 main.py        
(no error)

另一种方法是在代码中包含逻辑:

import os
import sys

project_home = '/home/username/temp-code/'
if project_home not in sys.path:
    sys.path = [project_home] + sys.path

在这种情况下, pylib文件夹位于temp-code文件夹内,并且此代码在您导入类之前运行。

希望有帮助!

参考: https : //docs.python.org/3/using/cmdline.html?highlight=pythonpath#envvar-PYTHONPATH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM