不使用 .py 扩展名从不同的文件夹导入 python
Import python from different folder without using .py extension
不使用 .py 扩展名从不同的文件夹导入 python
下面是我的 python 脚本 (feed_prg),它调用 python 脚本(分发)
请注意我的脚本在不同的位置
feed_prg
位于 /opt/callscript
#!/usr/bin/env python
import sys
sys.dont_write_bytecode = True
sys.path.append('/home/username')
import distribute
# Main method start execution
def main(argv):
something = 'some'
distribute.feed(something)
if __name__ == "__main__":
main(sys.argv[1:])
distribute
位于 /home/username
#!/usr/bin/env python
import sys
def feed(something):
print something
def main():
something= "some"
feed(something)
if __name__ == "__main__":
main()
我在执行 ./feed_prg 时看到以下错误,并且仅当我的分发文件名只是分发而不是 distribute.py
时
Traceback (most recent call last):
File "./feed_prg", line XX, in <module>
import distribute
ImportError: No module named distribute
分发也有执行权限,如下
-rwxr-xr-x 1 username username 3028 Dec 16 21:05 distribute
我该如何解决这个问题。 ?任何输入都会有所帮助
谢谢!
无法直接使用 import
执行此操作。最好将文件重命名为 .py
也就是说,可以使用 importlib
或 imp
将模块加载到变量中,具体取决于您的 Python 版本。
给定路径 ./distribute
中的以下文件(相对于 python 是 运行 的位置):
# distribute
print("Imported!")
a_var = 5
Python 2
# python2import
from imp import load_source
distribute = load_source("distribute", "./distribute")
print(distribute.a_var)
用法:
$ python python2import
Imported!
5
Python 3
#python3import
from importlib.machinery import SourceFileLoader
distribute = SourceFileLoader("distribute", "./distribute").load_module()
print(distribute.a_var)
用法:
$ python3 python3import
Imported!
5
不使用 .py 扩展名从不同的文件夹导入 python
下面是我的 python 脚本 (feed_prg),它调用 python 脚本(分发)
请注意我的脚本在不同的位置
feed_prg
位于 /opt/callscript
#!/usr/bin/env python
import sys
sys.dont_write_bytecode = True
sys.path.append('/home/username')
import distribute
# Main method start execution
def main(argv):
something = 'some'
distribute.feed(something)
if __name__ == "__main__":
main(sys.argv[1:])
distribute
位于 /home/username
#!/usr/bin/env python
import sys
def feed(something):
print something
def main():
something= "some"
feed(something)
if __name__ == "__main__":
main()
我在执行 ./feed_prg 时看到以下错误,并且仅当我的分发文件名只是分发而不是 distribute.py
时Traceback (most recent call last):
File "./feed_prg", line XX, in <module>
import distribute
ImportError: No module named distribute
分发也有执行权限,如下
-rwxr-xr-x 1 username username 3028 Dec 16 21:05 distribute
我该如何解决这个问题。 ?任何输入都会有所帮助
谢谢!
无法直接使用 import
执行此操作。最好将文件重命名为 .py
也就是说,可以使用 importlib
或 imp
将模块加载到变量中,具体取决于您的 Python 版本。
给定路径 ./distribute
中的以下文件(相对于 python 是 运行 的位置):
# distribute
print("Imported!")
a_var = 5
Python 2
# python2import
from imp import load_source
distribute = load_source("distribute", "./distribute")
print(distribute.a_var)
用法:
$ python python2import
Imported!
5
Python 3
#python3import
from importlib.machinery import SourceFileLoader
distribute = SourceFileLoader("distribute", "./distribute").load_module()
print(distribute.a_var)
用法:
$ python3 python3import
Imported!
5