【发布时间】:2016-10-28 21:49:38
【问题描述】:
我尝试在不带 .py 文件扩展名的情况下导入 ex: import something。那是行不通的。我还尝试通过创建一个 init.py 将它变成一个包,但它仍然不想导入。哦,顺便说一句,我正在使用 Python 3.5 。编辑:我正在使用 pythonista,目前无法访问计算机和/或 Xcode。
【问题讨论】:
标签: python ios pythonista
我尝试在不带 .py 文件扩展名的情况下导入 ex: import something。那是行不通的。我还尝试通过创建一个 init.py 将它变成一个包,但它仍然不想导入。哦,顺便说一句,我正在使用 Python 3.5 。编辑:我正在使用 pythonista,目前无法访问计算机和/或 Xcode。
【问题讨论】:
标签: python ios pythonista
我不知道您可以在 iOS 上执行此操作,但我从其他用户那里找到了修复程序。这段代码不是我的,而是索林的。
import os, sys, inspect
# realpath() will make your script run, even if you symlink it :)
cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder)
# use this if you want to include modules from a subfolder
cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"subfolder")))
if cmd_subfolder not in sys.path:
sys.path.insert(0, cmd_subfolder)
# Info:
# cmd_folder = os.path.dirname(os.path.abspath(__file__)) # DO NOT USE __file__ !!!
# __file__ fails if script is called in different ways on Windows
# __file__ fails if someone does os.chdir() before
# sys.argv[0] also fails because it doesn't not always contains the path
【讨论】:
在 pythonista 中,Documents 文件夹默认不在 sys.path 中。 site-packages 文件夹是您正在运行的当前脚本的路径。如果您尝试从控制台import foo,这将失败,除非包含 foo.py 的路径位于 sys.path 上。
您有三个基本选项: 1) 将您的“库”放入站点包中(从模块和模板中找到,但路径实际上是 ~/Documents/site-packages)
2) 导入前具体添加路径,比如Documents/somefolder里面有foo.py
sys.path.append(os.expanduser('~/Documents/somefolder'))
import foo
(尽管您应该首先检查路径是否在 sys.path 中,以免重复)
3) 使用impprtlib.find_module
【讨论】: