我想从a.py
调用b.py
中的函数。我在虚拟环境中运行它。
a.py
位于/home/user/admin/
,因此b.py
我有
import sys
sys.path.append('/home/user/admin')
from a import my_function
但是当我运行它时,我得到了
from a import my_function
ImportError: No module named my_function
为什么找不到该模块?
答案 0 :(得分:1)
由于您是在virtualenv中运行脚本,因此可能需要更改当前的工作目录:
my $running_threads = 2;
while ($running_threads) {
for my $thread (threads->list(threads::joinable)) {
$thread->join();
$running_threads--;
}
sleep 1;
}
您也可以尝试使用以下
的包import os
filepath = os.path.realpath(__file__)
dirname = os.path.dirname(filepath)
os.chdir(dirname)
from a import my_function
# do stuff
任意文件夹中创建一个__init__.py
,其中包含一个像python一样的文件包。此文件可以为空。接下来你可以像这样导入一个b:
/home/user/admin/
这是相对导入,基本上你要做的就是告诉解释器从当前包中导入from .a import my_function
,这是由点引用的。更多详情here
作为旁注,请不要对文件当前路径进行编码,而是使用以下内容:
a