我正在尝试在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
答案 0 :(得分:1)
Python解释器必须知道在哪里找到module_a.py
。导入模块module_a.py
的文件位于module_a.py
存在的目录的子目录中,&#34;这不是一个有用的东西&#34;。你可以尝试一些事情:
1-按照@CristiFati的建议,将您的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. Intra-package References)