繁体   English   中英

无法在父目录中导入模块

[英]Cannot import a module in parent directory

我正在尝试在Ubuntu 17中运行一个python项目,但模块加载时遇到问题。 我已经用一个简单的例子解决了这个问题。 该示例在Windows 10中有效,但在Ubuntu中不适用。 帮助使它正常工作将不胜感激!

这是我要执行的步骤:

首先,我在〜/ dev中创建一个名为code_playground的项目目录。 接下来,我为此项目创建一个virtualenv:

~/dev$ which virtualenv
/usr/local/bin/virtualenv

~/dev$ virtualenv -p python3.6 code_playground/
Running virtualenv with interpreter /usr/bin/python3.6
Using base prefix '/usr'
New python executable in /home/user/dev/code_playground/bin/python3.6
Also creating executable in /home/user/dev/code_playground/bin/python
Installing setuptools, pip, wheel...done.

我激活虚拟环境:

~/dev/code_playground$ source ./bin/activate
(code_playground) ~/dev/code_playground$ 

似乎有效:

(code_playground) ~/dev/code_playground$ which python
/home/user/dev/code_playground/bin/python

我创建了一个名为mod_a.py的文件,其中包含一个简单的函数:

def print_name(name):
    print('Your name is {0}'.format(name))

现在,我创建一个名为sub的子目录:

(code playground) ~/dev/code_playground$ mkdir sub
(code playground) ~/dev/code_playground$ cd sub
(code playground) ~/dev/code_playground/sub$ 

在sub内部,我创建了一个名为mod_b.py的文件,其中包含以下内容:

from mod_a import print_name

print_name('Joe')

我尝试运行mod_b.py,但出现错误:

(code playground) ~/dev/code_playground/sub$ python mod_b.py 
Traceback (most recent call last):
   File "mod_b.py", line 1, in <module>
      from mod_a import print_name
ImportError: No module named mod_a

Python解释器必须知道在哪里可以找到module_a.py 导入模块module_a.py的文件位于module_a.py所在目录的子目录中, module_a.py “没有太大帮助”。 您可以尝试几件事:

1- mod_a.py的建议,将mod_a.py路径(在脚本运行之前)添加到Python的路径。

2-将您的mod_a.py路径(使用Python代码)添加到Python路径中,执行类似(讨厌的)的操作:

import
sys.path.insert(0, '/home/user/dev/code_playground/bin/python')
from mod_a import print_name
...

3-评估相对进口( 6.4.2。内包装参考

暂无
暂无

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

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