无法使用 pythonista 应用程序在 iOS 上导入 python 文件
Can't import a python file on iOS using the app pythonista
我尝试在没有 .py 文件扩展名的情况下导入,例如:import something。那是行不通的。我还尝试通过创建 init.py 将它变成一个包,但它仍然不想导入。哦,顺便说一句,我正在使用 Python 3.5 。编辑:我正在使用 pythonista,目前无法访问计算机 and/or Xcode.
我不知道您可以在 iOS 上执行此操作,但我从其他用户那里找到了修复程序。此代码不是我的,但它是 sorin 的。
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) 将你的 "libraries" 放入站点包中(从模块和模板中找到,但实际上路径是 ~/Documents/site-packages)
2)具体在import前添加路径,比如如果你在Documents/somefolder
里面有foo.py
sys.path.append(os.expanduser('~/Documents/somefolder'))
import foo
(尽管您应该首先检查路径是否在 sys.path 中,这样您就不会重复)
3) 使用impprtlib.find_module
我尝试在没有 .py 文件扩展名的情况下导入,例如:import something。那是行不通的。我还尝试通过创建 init.py 将它变成一个包,但它仍然不想导入。哦,顺便说一句,我正在使用 Python 3.5 。编辑:我正在使用 pythonista,目前无法访问计算机 and/or Xcode.
我不知道您可以在 iOS 上执行此操作,但我从其他用户那里找到了修复程序。此代码不是我的,但它是 sorin 的。
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) 将你的 "libraries" 放入站点包中(从模块和模板中找到,但实际上路径是 ~/Documents/site-packages)
2)具体在import前添加路径,比如如果你在Documents/somefolder
里面有foo.pysys.path.append(os.expanduser('~/Documents/somefolder'))
import foo
(尽管您应该首先检查路径是否在 sys.path 中,这样您就不会重复)
3) 使用impprtlib.find_module