Импортирующие модули Python по-разному при выполнении интерактивного/неинтрактативного

StackOverflow https://stackoverflow.com/questions/1777671

Вопрос

Один из моих сценариев Python работает в интерактивном режиме, но сбой при запуске из командной строки. Разница в том, что при запуске из командной строки он импортирует модули из плохого файла.

Мой вопрос в два раза: а) Почему Python загружает модули по-разному при запуске из этих мест, и б) каковы мои варианты обойти его?

Это было полезно?

Решение

Я не понимаю, что вы имеете в виду под запуска скрипта в интерактивном режиме, поэтому я не могу точно сказать. Но первое место для поиска модулей (sys.path[0]) в интерактивном режиме является текущий каталог (даже вызов os.chdir() повлияет на импорт), в то время как для сценария его каталога, где расположен сценарий (получен из sys.argv[0]) Обратите внимание, что они фактически одинаковы, когда сценарий работает из каталога, где он находится, но может отличаться в других случаях. Надеюсь это поможет.

Другие советы

На системах UNIX и Mac OS-X:

  • У тебя есть ~/.python-eggs каталог?

ОС независимо:

  • Вы уверены, что используете один и тот же экземпляр Python в обоих случаях?

  • Вы можете распечатать sys.path В каждом случае и посмотрите, какой каталог пакетов поступает на первом месте на пути поиска модуля?

A) Почему Python загружает модули по -разному при запуске из этих мест б) каковы мои варианты обойти его?

Проверьте переменную среды Pythonpath. Когда Python Imports Module, он ищет эти каталоги. Один из способов обойти вашу проблему - добавить вашу локальную папку «(распакованная) версия в текущем каталоге» в начало Pythonpath, чтобы Python нашел ее первым.

Это работает для меня:

import sys

sys.path[0]=''
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top