Файл Python и Ubuntu не найден

1

Я несколько раз запускал несколько версий Python на своем Ubuntu 10.10, но у меня были некоторые проблемы с python2.5 (для Google app-engine). Поэтому я взорвал установку 2.5 (и удалил каталог сайтов-пакетов вместе с Python2.5) и переустановил... получил ту же ошибку, файл не найден, который был там.. поэтому я решил, что я пытаюсь установить Virtual env и работать с этим. ну теперь кажется, что все мои питоны были закрыты.

Я не могу выполнить файл py из командной строки, например. "python python.py", и это касается всех версий, которые у меня есть. Поэтому мне интересно, есть ли какие-то глобальные настройки, которые получили? не имеют понятия, где искать. В приведенном ниже примере показано, что файл virtualenv может быть импортирован, но не может быть выполнен как обычный, просто не найден. Я изменил разрешения для выполнения в файле virtualenv.py, но это не имело никакого значения. Я установил virtualenv на несколько версий Python, 2.6, 2.7 (в дополнение к 2.5), и я получаю одинаковое поведение на всех, поэтому я подозреваю 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 fine. Тем временем запустив свою альтернативную машину :-(

Теги:
virtualenv

2 ответа

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)

  • 0
    Это будет большая помощь. (файл для дальнейшего использования). Как выяснилось, основная проблема, с которой я столкнулся, заключалась в том, что я использовал Pythonpath против настройки системного пути ... не совсем уверен, как интерпретировать эту проблему и как обобщить то, что мне нужно, когда ,, в этом случае мне нужно было поместите SDK Google-app-engine в системный путь (а не в pythonpath), однако это помогло решить мою конкретную проблему.
2

Когда вы импортируете его, он проходит через путь Python, чтобы найти его, но когда вы вводите:

python2.5 virtualenv.py

который предполагает его в текущем каталоге.

  • 0
    хорошо, что помогает, но, насколько я помню, virtualenv обычно довольно прост в использовании ... и переход к месту установки - нет, и, кроме того, он не может записать полученный файл env ... конечно, я мог бы пойти sudo, но это в некотором роде побеждает идею .. Так что я явно что-то напутал с установкой или путями ??? Результат: OSError: [Errno 13] Отказано в доступе: 'env1'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню