【问题标题】:Python and Ubuntu file not found未找到 Python 和 Ubuntu 文件
【发布时间】:2011-08-27 18:28:10
【问题描述】:

我已经在我的 Ubuntu 10.10 上运行了几个版本的 Python,但我在使用 python2.5(用于 Google 应用引擎)时遇到了一些问题 所以我吹走了2.5安装(并删除了站点包目录以及Python2.5目录)并重新安装......得到了同样的错误,一个文件没有找到......所以我想我试试安装虚拟环境并使用它。好吧,现在看来我所有的蟒蛇都被冲洗了..

我无法从命令行执行 py 文件,例如。 “python python.py”,我拥有的所有版本都是这种情况。所以我想知道是否有一些全局设置被破坏了?不知道在哪里看.. 下面的示例显示 virtualenv 文件可以导入但不能正常执行,只是找不到.. 我确实更改了在 virtualenv.py 文件上执行的权限,但是没有任何区别。我在多个版本的 Python、2.6、2.7(除了 2.5)上安装了 virtualenv,而且我在所有版本上都得到了相同的行为,所以我怀疑 Bash 或 Ubuntu 中的其他东西,而不是 python 不是虚拟 env..

enter code here
tom@tom-Satellite-A105:~$ python2.5 virtualenv.py env
python2.5: can't open file 'virtualenv.py': [Errno 2] No such file or directory
tom@tom-Satellite-A105:~$ python2.5
Python 2.5.6 (r256:88840, Aug  6 2011, 08:40:44) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> import virtualenv
>>> exit()

^^^^^^说明Python2.5可以很好的导入virtualenv 同时启动我的备用机器:-(

【问题讨论】:

    标签: python ubuntu virtualenv


    【解决方案1】:

    当你导入它时,它会通过Python路径找到它,但是当你输入时:

    python2.5 virtualenv.py
    

    假设它在当前目录中。

    【讨论】:

    • 嗯,这有点帮助,但我记得 virtualenv 通常很容易使用.. 并且下到安装位置不是,除此之外它无法写入生成的 env 文件......当然我可以去 sudo 但这进一步挫败了这个想法..所以我显然把安装或路径搞砸了???结果:OSError:[Errno 13] 权限被拒绝:'env1'
    【解决方案2】:

    跟踪此类 WTF 的一个很好的起点是在 strace 下运行该进程,该进程将报告(大量)进行的系统调用以及每个调用的结果......然后您可以查看它是否真的是无法保存的文件找到了,或者其他问题

    $ trace python NOFILE.py
    execve("/usr/bin/python", ["python", "NOFILE.py"], [/* 63 vars */]) = 0
    brk(0)                                  = 0x9bef000
    mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78de000
    access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
    open("/etc/ld.so.cache", O_RDONLY)      = 3
    fstat64(3, {st_mode=S_IFREG|0644, st_size=160388, ...}) = 0
    mmap2(NULL, 160388, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb78b6000
    close(3)                                = 0
      ...[snip]...
    stat64("NOFILE.py", 0xbfbc53bc)         = -1 ENOENT (No such file or directory)
    stat64("NOFILE.py", 0xbfbc53cc)         = -1 ENOENT (No such file or directory)
    open("NOFILE.py", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
    write(2, "/usr/bin/python2.6: can't open f"..., 85/usr/bin/python2.6: can't open file 'NOFILE.py': [Errno 2] No such file or directory) = 85
    exit_group(2)                           = ?
    

    例如 strace 使用您的脚本调用 python、一个确实打开的脚本和一个不存在的文件,然后比较跟踪...。我猜您会发现错误在其他地方,但错误是报错

    如果 virtualenv.py 不在本地文件夹中,您可以尝试显式设置 PYTHONPATH 以查看是否可以修复它(请参阅“python -h”),如果是,请查看在 a 上修改 sys.path 的内容设置它的工作位置(例如再次运行 strace)

    【讨论】:

    • 这将是一个很大的帮助。 (归档以备将来使用)。事实证明,我遇到的主要问题是我使用的是 Pythonpath 与系统路径设置.. 不完全确定如何解释该问题,以及如何概括我需要的,何时,在这种情况下我需要将 Google-app-engine SDK 放在系统路径(不是 pythonpath)上,但它确实解决了我的特定问题..
    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 2014-04-30
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2018-03-02
    相关资源
    最近更新 更多