python - 在不使用 .py 扩展名的情况下从不同的文件夹导入 python
问题描述
在不使用 .py 扩展名的情况下从不同的文件夹导入 python
下面是我调用python脚本(分发)的python脚本(feed_prg)
请注意,我的脚本位于不同的位置
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 时看到以下错误,并且仅当我的分发文件名只是分发而不是分发.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
蟒蛇2
# python2import
from imp import load_source
distribute = load_source("distribute", "./distribute")
print(distribute.a_var)
用法:
$ python python2import
Imported!
5
蟒蛇 3
#python3import
from importlib.machinery import SourceFileLoader
distribute = SourceFileLoader("distribute", "./distribute").load_module()
print(distribute.a_var)
用法:
$ python3 python3import
Imported!
5
推荐阅读
- php - PHP - $_SESSION 在页面刷新后不保留数据
- java - 在linux系统中解析日期时出现运行时异常(在windows系统中工作正常)
- python-3.x - 我试图制作一个数学奇才游戏,但我无法让它工作
- python - 如何检查字符串是否存在于相同索引python的列表中
- powershell - 卷曲错误:无法处理参数,因为参数名称“u”不明确
- php - 在 Woocommerce 产品选项卡部分中为评分菜单项标题添加星级评分
- javascript - 相扑选择 - 如何使加载的列表框始终打开?
- java - Java:为什么 FileReader 方法 .read() 需要一个变量?
- jestjs - 松散匹配 jest.toHaveBeenCalledWith 中的一个值
- jsp - 自升级到 Java 8 以来 AppEngine 项目的 JSP 页面中的 UTF-8 编码