我有一个包:pyfoo在目录/home/user/somedir中
这个包裹是普通的
‘/home/user/somedir/pyfoo/\uu init\uy.py’
我希望能够使用其完整路径“/home/user/somedir/pyfoo/”导入此模块
但是当模块是一个包的时候,我似乎不能让它工作。在
我发现的一个非常奇怪的用例是,在用h5py写入一个文件之前,我被深深地嵌入到脚本执行中。在
我不得不卸载h5py并用openmpi重新安装一个并行版本,但是即使卸载了它,h5py(串行)仍然在内存中。我不想重新启动,因为脚本花了很长时间。我试图重新加载模块,但没用。我还试图从文件名导入它,方法是使用目录并使用\uu init_uu.py,但是我得到了相对的导入错误。我甚至尝试将新的安装位置添加到系统路径执行正常的导入,但也失败了。在
我已经在我的个人实用程序库中有一个import_from_filepath函数,我还想添加import_from_dirpath,但我在弄清楚它是如何实现的方面有点麻烦。在
下面是一个脚本来说明这个问题:# Define two temporary modules that are not in sys.path
# and have the same name but different values.
import sys, os, os.path
def ensuredir(path):
if not os.path.exists(path):
os.mkdir(path)
ensuredir(‘tmp’)
ensuredir(‘tmp/tmp1’)
ensuredir(‘tmp/tmp2’)
ensuredir(‘tmp/tmp1/testmod’)
ensuredir(‘tmp/tmp2/testmod’)
with open(‘tmp/tmp1/testmod/__init__.py’, ‘w’) as file_:
file_.write(‘foo = \”spam\”\nfrom . import sibling’)
with open(‘tmp/tmp1/testmod/sibling.py’, ‘w’) as file_:
file_.write(‘bar = \”ham\”‘)
with open(‘tmp/tmp2/testmod/__init__.py’, ‘w’) as file_:
file_.write(‘foo = \”eggs\”\nfrom . import sibling’)
with open(‘tmp/tmp1/testmod/sibling.py’, ‘w’) as file_:
file_.write(‘bar = \”jam\”‘)
# Neither module should be importable through the normal mechanism
try:
import testmod
assert False, ‘should fail’
except ImportError as ex:
pass
# Try temporarilly adding the directory of a module to the path
sys.path.insert(0, ‘tmp/tmp1’)
testmod1 = __import__(‘testmod’, globals(), locals(), 0)
sys.path.remove(‘tmp/tmp1’)
print(testmod1.foo)
print(testmod1.sibling.bar)
sys.path.insert(0, ‘tmp/tmp2’)
testmod2 = __import__(‘testmod’, globals(), locals(), 0)
sys.path.remove(‘tmp/tmp2’)
print(testmod2.foo)
print(testmod2.sibling.bar)
assert testmod1.foo == “spam”
assert testmod1.sibling.bar == “ham”
# Fails, returns spam
assert testmod2.foo == “eggs”
assert testmod2.sibling.bar == “jam”
在系统路径无法通过路径导入。它默认导入先前加载的模块。在
今天的文章qpython手机版文件路径_如何使用完整的路径导入python包或qinit_uuy.py文件?[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/65707.html