Python:需要帮助从不同目录导入模块

Posted

技术标签:

【中文标题】Python:需要帮助从不同目录导入模块【英文标题】:Python: Need help importing module from a different directory 【发布时间】:2017-10-11 06:46:03 【问题描述】:

我在 Mac OSX 10.12.4 上运行 Python3.6

/Documents/PyProjects/modules/

在该目录中,存在 __init__.py 和 Pyrime.py。 Pyrime.py 里面有一些函数。

/Documents/PyProjects/PE010/

我的程序位于该目录中:PE010_Summation_of_Primes.py。我想在Pyrime.py 中导入一个名为is_prime 的函数以在PE010_Summation_of_Primes.py 中使用。我想我需要做的就是写信,PE010_Summation_of_Primes.py:

from modules.Pyrime import is_prime

这不起作用。我的终端抛出:

Traceback (most recent call last):
  File "PE010_Summation_of_Primes.py", line 1, in <module>
    from Pyrime import is_prime
ModuleNotFoundError: No module named 'Pyrime'

Python 是我见过的第一种语言,到目前为止我只见过它大约一周。我查看了很多文档,但对于像我这样的初学者来说,它并不是很有启发性。

【问题讨论】:

请务必查看documentation,其中的基本内容描述得非常清楚。在您的描述中要评论的一件事是您必须尊重名称__init__.py(注意两个双下划线) 【参考方案1】:

好吧,python 在尝试导入文件时指的是全局库目录或本地目录。但是对于非本地目录中的文件,您可以将文件路径添加到sys.path 或在包括父目录PyProjects 在内的所有目录中创建__init__.py 文件。试试这个 -

from modules.Pyrime import is_prime

所以你的目录看起来像这样 -

PyProjects
    -- __init__.py
    -- PE010
        -- __init__.py
        -- PE010_Summation_of_Primes.py
    -- modules
        -- __init__.py
        -- Pyrime.py

希望对你有帮助。

【讨论】:

【参考方案2】:

在运行时添加系统路径:

import sys
sys.path.insert(0, 'path/to/your/py_file')
import py_file

它会起作用的!

【讨论】:

这成功了!在阅读了更多文档之后,我想我明白了!非常感谢! 最欢迎! (y)

以上是关于Python:需要帮助从不同目录导入模块的主要内容,如果未能解决你的问题,请参考以下文章

目录树中不同级别的CORBA python文件而不是导入它们的模块

Python自定义模块导入

从另一个目录导入python模块

从不同子文件夹的子文件夹相对导入python模块

python导入不同目录下模块的方法

Python基础-----模块导入注意事项