找不到Python和Ubuntu文件

时间:2011-08-27 18:28:11

标签: python ubuntu virtualenv

我已经在我的Ubuntu 10.10上运行了几个版本的Python一段时间但是我遇到了python2.5的一些问题(对于Google app-engine) 所以我吹了2.5安装(并删除了site-packages目录和Python2.5目录)并重新安装...得到了同样的错误,找不到的文件就在那里..所以我想我试试安装虚拟环境并使用它。好吧,现在看来我所有的蟒蛇都被冲了......

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

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 在此期间启动我的备用机器: - (

2 个答案:

答案 0 :(得分:2)

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

python2.5 virtualenv.py

假设它在当前目录中。

答案 1 :(得分:1)

跟踪此类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”),如果是,请查看修改sys.path的内容。设置它工作的地方(例如再次运行strace)