1

我尝试在没有 .py 文件扩展名的情况下导入 ex: import something。那是行不通的。我还尝试通过创建一个init .py 将它变成一个包,但它仍然不想导入。哦,顺便说一句,我正在使用 Python 3.5 。编辑:我正在使用 pythonista,目前无法访问计算机和/或 Xcode。

4

2 回答 2

1

在 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

于 2016-11-19T20:48:42.920 回答
0

我不知道你可以在 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
于 2016-06-29T00:02:30.447 回答