从另一个脚本调用Python函数?

时间:2015-07-06 23:32:51

标签: python virtualenv

我想从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

为什么找不到该模块?

1 个答案:

答案 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