从其他目录调用 python 脚本函数
call python script function from other directory
正在尝试从其他目录调用 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脚本所在的目录相同,那么下面的wroks
没有任何问题:-
python -c 'from foo import *; hii()'
但是如果 python 脚本在子目录中,那么下面的尝试没有成功:-
python -c 'from eg/foo import *; hii()'
python -c 'from eg.foo import *; hii()'
python -c 'from eg.foo.py import *; hii()'
python 机器上的版本是 2.7.16
这对我有用->
python -c "from eg import foo as foo1;foo1.hi()"
Inside Eg Foo
python -c "import foo as foo;foo.hi()"
Inside First FOO
但是,如果您在脚本中使用它,则需要使用以下命令在路径变量中添加主路径。
import sys
sys.path.append("Your main path")
你试过python -c 'from ./eg/foo import *; hii()'
了吗?也许您只需要开头的 ./
。
正在运行...pyCall.sh
#!/bin/bash
python -c "import sys;sys.path.append('./eg');import foo as foo1;foo1.hii()"
运行
sudo chmod +x ./pyCall.sh
./pyCall.sh
确保你的 foo 文件在这个 location.Did 的 eg 目录中,你让它工作了吗?
正在尝试从其他目录调用 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脚本所在的目录相同,那么下面的wroks 没有任何问题:-
python -c 'from foo import *; hii()'
但是如果 python 脚本在子目录中,那么下面的尝试没有成功:-
python -c 'from eg/foo import *; hii()'
python -c 'from eg.foo import *; hii()'
python -c 'from eg.foo.py import *; hii()'
python 机器上的版本是 2.7.16
这对我有用->
python -c "from eg import foo as foo1;foo1.hi()"
Inside Eg Foo
python -c "import foo as foo;foo.hi()"
Inside First FOO
但是,如果您在脚本中使用它,则需要使用以下命令在路径变量中添加主路径。
import sys
sys.path.append("Your main path")
你试过python -c 'from ./eg/foo import *; hii()'
了吗?也许您只需要开头的 ./
。
正在运行...pyCall.sh
#!/bin/bash
python -c "import sys;sys.path.append('./eg');import foo as foo1;foo1.hii()"
运行
sudo chmod +x ./pyCall.sh
./pyCall.sh
确保你的 foo 文件在这个 location.Did 的 eg 目录中,你让它工作了吗?