【发布时间】:2020-03-13 12:10:39
【问题描述】:
试图从其他目录调用 python 脚本的函数。 下面是简化的例子:-
~/playground/octagon/bucket/pythonImport/eg $
pwd
/Users/mogli/playground/octagon/bucket/pythonImport/eg
~/playground/octagon/bucket/pythonImport/eg $
ls
foo.py
~/playground/octagon/bucket/pythonImport/eg $
cat foo.py
import sys
def hello():
print('Hello :)')
def hii():
print('Hii :)')
~/playground/octagon/bucket/pythonImport/eg $
python -c 'from foo import *; hii()'
Hii :)
~/playground/octagon/bucket/pythonImport/eg $
cd ..
~/playground/octagon/bucket/pythonImport $
ls
eg
~/playground/octagon/bucket/pythonImport $
python -c 'from eg/foo import *; hii()'
File "<string>", line 1
from eg/foo import *; hii()
^
SyntaxError: invalid syntax
~/playground/octagon/bucket/pythonImport $
python -c 'from eg.foo import *; hii()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named eg.foo
~/playground/octagon/bucket/pythonImport $
python -c 'from eg.foo.py import *; hii()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named eg.foo.py
如果执行目录与python脚本所在的目录相同,则在下面工作 没有任何问题:-
python -c '从 foo 导入 *; hii()'
但如果 python 脚本位于子目录中,则以下尝试无效:-
python -c '从 eg/foo 导入 *; hii()'
python -c '从 eg.foo 导入 *; hii()'
python -c '从 eg.foo.py 导入 *; hii()'
机器上的python版本是2.7.16
【问题讨论】:
-
为什么 python 从相对路径导入简单的东西变得如此复杂?在不同的门户和复杂的解决方案链上有许多Q。在其他 C++、Java 等中,这是直截了当的方法。
标签: python-2.7 function relative-path