我的系统:Ubuntu 14.04 和 Python 2.7,带有 Sublime Text 3。我用 Sublime Text 2 重复了这个,但似乎仍然无法让它工作。
我有一个自定义文件夹,我在其中组织了我的文件,比如 mobile/backend/scripts/ 现在我想从另一个脚本中的文件夹中导入一些函数,比如 a.py
# a.py
from mobile.backend.scripts import funct1
#actual code
当我通过 IDLE/cmd 行运行它时,它可以工作,但不能通过 sublime 文本。我也试过Pycharm,好像也有同样的问题。
Traceback (most recent call last):
File "/home/ekta/br/work/src/mobile/backend/scripts/a.py", line 26, in <module>
from mobile.backend.scripts import funct1
ImportError: No module named mobile.backend.scripts
[Finished in 0.0s with exit code 1]
[shell_cmd: python -u "/home/ekta/br/work/src/mobile/backend/scripts/a.py"]
[dir: /home/ekta/br/work/src/mobile/backend/scripts]
[path: /usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]
观察:如您所见,调试器中的“路径”并未反映实际在我的 $PATH 和 $PYTHONPATH 和 sys.path 中的“移动”路径
您看到的路径没有显示它会检测到我在 ~/.bashrc 中设置的路径,即
$ 回声 $PATH
/usr/local/apache-maven/apache-maven-3.1.1/bin:/home/ekta/br/thirdparty/hadoop/bin:/home/ekta/br/tools/ec2/bin:/home/ekta/ br/tools/elastic-mapreduce:/home/ekta/br/tools/gogrid:/usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/ bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ekta/br/work/src/:/home/ekta/br/work /src/backend/python:/home/ekta/br/work/src/backend/build/lib:/mnt/production/dist/python:/mnt/production/mobile:/home/ekta/br/work/src /mobile::/home/ekta/br/thirdparty/hadoop/bin
由于我不明白为什么会丢失整个 $PATH,所以我在 Sublime Text3 中设置路径,Preferences-> Package settings-> Package Control-> Settings user as,
{
"installed_packages":
[
"Sublime Files",
"SublimeLinter-pep257",
"SublimeLinter-pep8",
"SublimeLinter-pylint"
],
"paths": {
"linux":"/usr/local/apache-maven/apache-maven-3.1.1/bin:/home/ekta/br/thirdparty/hadoop/bin:/home/ekta/br/tools/ec2/bin:/home/ekta/br/tools/elastic-mapreduce:/home/ekta/br/tools/gogrid:/home/ekta/br/work/src/:/home/ekta/br/work/src/backend/python:/home/ekta/br/work/src/backend/build/lib:/mnt/production/dist/python:/mnt/production/mobile:/home/ekta/br/work/src/mobile::/usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/ekta/br/thirdparty/hadoop/bin",
"osx": [],
"windows": []
},
"env": {
"PYTHONPATH":"/usr/local/lib/python:/home/ekta/br/work/src/:/home/ekta/br/work/src/backend/python:/home/ekta/br/work/src/backend/build/lib:/mnt/production/dist/python:/mnt/production/mobile:/home/ekta/br/work/src/mobile"
}
}
我还检查了我的 sys.path 中是否有路径
系统路径
['',
'/usr/local/lib/python2.7/dist-packages/prettytable-0.7.2-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/enum-0.4.4-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/time_uuid-0.1.1-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/protobuf_to_dict-0.0.5-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/protobuf-2.6.0-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/pycassa-1.11.0-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/thrift-0.9.1-py2.7-linux-i686.egg',
'/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.9.7-py2.7-linux-i686.egg',
'/usr/local/lib/python2.7/dist-packages/unicodecsv-0.9.4-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/xlutils-1.7.1-py2.7.egg',
'/usr/lib/python2.7/dist-packages',
'/usr/local/lib/python2.7/dist-packages/plumbum-1.4.2-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/EasyProcess-0.1.6-py2.7.egg',
'/home/ekta/br/work/src',
'/home/ekta/br/work/src/backend/python',
'/home/ekta/br/work/src/backend/build/lib',
'/mnt/production/dist/python',
'/mnt/production/mobile',
'/home/ekta/br/work/src/mobile',
'/home/ekta',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-i386-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
从文档中,我不明白这应该将路径“添加”到我的 PATH 中,在这里引用-:http: //sublimelinter.readthedocs.org/en/latest/troubleshooting.html#finding-a-linter-executable
我的问题,因为这没有设置路径 - 我错过了什么?我的目标是在调试脚本时进行交互式 REPL,因为 IDLE 不是一个好的调试接口。
--(非工作)黑客 -- 1. 我也尝试了这个黑客,通过将文件 Pathway.py 放在 /home/ekta/.config/sublime-text-3/Packages/User/ 中 - 但也不起作用参考 - http://robdodson.me/blog/2012/05/14/hacking-the-path-variable-in-sublime-text/
import os
LOCAL = '/usr/local/bin:/usr/local/sbin:'
HOME = '/home/ekta'
# Sublime's default path is
# /usr/bin:/bin:/usr/sbin:/sbin
os.environ['PATH'] += ':'
os.environ['PATH'] += LOCAL
print 'PATH = ' + os.environ['PATH']
- 在 sublime Text 3 的“显示控制台”中,我看到了
import sys sys.path ['/opt/sublime_text', '/opt/sublime_text/python3.3.zip',/home/ekta/.config/sublime-text-3/Packages'] '''and obviously''' import os os.environ['PATH'] '/usr/local/apache-maven/apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games'
这个 sys.path 没有“用户”,所以,我将 Pathways.py 文件移动到 /home/ekta/.config/sublime-text-3/Packages/ 而不是 /Packages/user/ - 这没有帮助任何一个。
编辑-: 另一个问题:为什么我在这里看到“python3.3.zip”?Sublime text 3, 不适用于 Python 2.7 吗?Sublime Text 3 的系统控制台中的 sys.version 也显示为 2.7 - 那么这一切都相关吗?
带有崇高的文本2
现在,我在卸载 Sublime Text 3 并从文件中打印 sys.path 后,使用 Sublime Text 2 重复了 hacks 部分中的步骤,我尝试使用 Cntr+B 执行,但仍然得到相同的错误,没有 ImportError:没有名为 mobile.backend.scripts 的模块