从不同目录调用文件时如何指定导入路径?
How to specify an import path when the file is called from different directories?
我遇到了与导入路径相关的问题。我有一个库文件(func_a.py)如下。这个文件是从不同的目录调用的。在这种情况下,如何在 client.py?
中指定导入路径
.
├── main.py
└── package_a
├── __init__.py
├── client.py
└── func_a.py
代码如下:
$ cat package_a/func_a.py
def something():
print('something')
$ cat package_a/client.py
import func_a
func_a.something()
$ cat main.py import package_a.func_a as func_a
import package_a.client as client
func_a.something()
这是错误。当我调用 client.py 时,文件丢失了 func_a.py,因为当前目录是根目录,而不是 package_a/.
$ python main.py Traceback (most recent call last):
File "main.py", line 2, in <module>
import package_a.client as client
File "/home/jef/work/test/package_a/client.py", line 1, in <module>
import func_a
ModuleNotFoundError: No module named 'func_a'
我的 python 是 3.6。感谢您的帮助。
更新
虽然调用main.py没问题,但是调用client.py失败了。我使两者都起作用。
$ cat client.py
from package_a import func_a
func_a.something()
$ python client.py
Traceback (most recent call last):
File "client.py", line 2, in <module>
from package_a import func_a
ModuleNotFoundError: No module named 'package_a'
$ cat package_a/client.py
import func_a
^ 此导入语句不正确。要从 package_a
包中导入 func_a
模块,请改用此导入语句:
from package_a import func_a
您需要确保包含 package_a
的目录在 sys.path
中可见。
我遇到了与导入路径相关的问题。我有一个库文件(func_a.py)如下。这个文件是从不同的目录调用的。在这种情况下,如何在 client.py?
中指定导入路径.
├── main.py
└── package_a
├── __init__.py
├── client.py
└── func_a.py
代码如下:
$ cat package_a/func_a.py
def something():
print('something')
$ cat package_a/client.py
import func_a
func_a.something()
$ cat main.py import package_a.func_a as func_a
import package_a.client as client
func_a.something()
这是错误。当我调用 client.py 时,文件丢失了 func_a.py,因为当前目录是根目录,而不是 package_a/.
$ python main.py Traceback (most recent call last):
File "main.py", line 2, in <module>
import package_a.client as client
File "/home/jef/work/test/package_a/client.py", line 1, in <module>
import func_a
ModuleNotFoundError: No module named 'func_a'
我的 python 是 3.6。感谢您的帮助。
更新
虽然调用main.py没问题,但是调用client.py失败了。我使两者都起作用。
$ cat client.py
from package_a import func_a
func_a.something()
$ python client.py
Traceback (most recent call last):
File "client.py", line 2, in <module>
from package_a import func_a
ModuleNotFoundError: No module named 'package_a'
$ cat package_a/client.py
import func_a
^ 此导入语句不正确。要从 package_a
包中导入 func_a
模块,请改用此导入语句:
from package_a import func_a
您需要确保包含 package_a
的目录在 sys.path
中可见。