Python ImportError при выполнении «import.py», но не при выполнении «python import.py» - PullRequest
1 голос
/ 12 марта 2010

Я использую Cygwin Python версии 2.5.2.

У меня есть трехстрочный исходный файл с именем import.py:

#!/usr/bin/python
import xml.etree.ElementTree as ET
print "Success!"

Когда я выполняю «python import.py», он работает:

C:\Temp>python import.py
Success!

Когда я запускаю интерпретатор python и набираю команды, он работает:

C:\Temp>python
Python 2.5.2 (r252:60911, Dec  2 2008, 09:26:14)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> #!/usr/bin/python
... import xml.etree.ElementTree as ET
>>> print "Success!"
Success!
>>>

Но когда я запускаю import.py, он не работает:

C:\Temp>which python
/usr/bin/python

C:\Temp>import.py
Traceback (most recent call last):
  File "C:\Temp\import.py", line 2, in ?
    import xml.etree.ElementTree as ET
ImportError: No module named etree.ElementTree

Когда я удаляю первую строку (#! / Usr / bin / python), я получаю ту же ошибку. Тем не менее, мне нужна эта строка, когда этот скрипт работает в Linux. И это прекрасно работает на Linux.

Есть идеи?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 12 марта 2010

У меня такое ощущение, что

C:\Temp>import.py

использует другой переводчик. Можете ли вы попробовать следующие сценарии:

#!/usr/bin/env python
import sys
print sys.executable
import xml.etree.ElementTree as ET
print "Success!"
1 голос
/ 12 марта 2010

Возможно расширение py связано с каким-то другим интерпретатором python, чем тот, что находится в / usr / bin / python

0 голосов
/ 12 марта 2010

Создайте пакетный файл рядом с вашей программой, который правильно его называет ... и я вполне уверен, что у вас проблема из-за неоднозначности между "windows python" (интерпретатор python, скомпилированный для windows) "cygwin python" (интерпретатор python, работающий на cygwin).

0 голосов
/ 12 марта 2010

Попробуйте:

./import.py

У большинства людей нет "." на их пути.

просто набрав python вызовет cygwin python.

import.py, скорее всего, будет вызывать любой Python, связанный с .py файлами в Windows.

Вы используете два разных исполняемых файла Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...