1

我的系统: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']
  1. 在 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 的模块

4

0 回答 0