2009-11-20 4 views
2

Я установил пару питонов в разных версиях с macports, и ядро ​​python 2.6 также работает. Теперь мне нужно запустить программу, которая требует поддержки пакета MySQLdb в python, и этот пакет был установлен на питон, который я установил macports. Программа говорит мне, что MySQLdb не установлен, поэтому я думаю, что это яблочный питон, работающий для этой программы.

Я искал какую-либо помощь и нашел python_select для переключения между питонами. Однако после того, как команда

$>sudo python_select python25 

сказал мне, что он выбрал версию «Python25» для питона, когда я типа

$>python 

это еще яблоко питон 2.6, который запускает.

Вопрос в том, как я могу заставить python25 (тот, у кого MySQLdb) работать для программы, а не apple python?

Еще одна важная вещь: программа НЕ является .py-файлом и должна быть скомпилирована перед запуском. Так что мне нужно переустановить эту программу? Версия для Mac OS - Snow Leopard 10.6.

Любой ответ приветствуется.

+0

За дополнительной информацией, я только что нашел этот вопрос: http://stackoverflow.com/questions/1499572/with-multiple-python-installs-how-does-macports-know-which-one-to-install- mysqld У меня такая же проблема, как и этот вопрос. Надеюсь, это поможет в ваших ответах. – Jim

ответ

7

По умолчанию MacPorts устанавливает пользовательские программы (или ссылки на них) в /opt/local/bin. Команда MacPorts select_python выбирает, какой экземпляр python связан с /opt/local/bin/python. Он не влияет (и не должен) на то, что Apple устанавливает в /usr/bin, где находятся поставляемые Apple команды python и python2.x.

Чтобы вызвать MacPorts python2.5, вам необходимо либо убедиться, что /opt/local/bin предшествует /usr/bin от оболочки $PATH (вы можете сделать это, изменив ваш .bash_profile или другой инициализации сценарий оболочки) или вы можете просто вызвать нужный питона с абсолютной ссылкой пути:

$ /usr/bin/python your-program.py 

для использования поставляемого Apple по умолчанию python;

$ /opt/local/bin/python your-program.py 

использовать отобранную версию с python_select, или:

$ /opt/local/bin/python2.5 your-program.py 

явно выбрать MacPorts 2.5 один.

EDIT:

Чтобы изменить пути поиска, чтобы использовать MacPorts, добавьте эту строку в .bash_profile:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
+0

Я слышал, что «экспорт» длится только для сеанса терминала, правда? – Jim

+0

Как правило, каждый сеанс терминала запускает новую оболочку «входа», что означает, что команды в вашем файле ~/.bash_profile будут выполняться для каждого сеанса терминала. Команда export сообщает оболочке передать значение этой переменной окружения ($ PATH) в любые последующие подпроцессы, которые она создает. Таким образом, чистый эффект заключается в том, что экспортируемые переменные будут доступны во всех сеансах терминала и запущенных в них программах - если вы явно не отмените их или не измените их значение. –

+0

Я вижу. Большое спасибо за ваш ответ. – Jim

0

Во-первых, я не уверен с Mac, потому что я никогда не использовал его раньше.

, но в Linux, когда я whereis python

Он покажет, как /usr/bin/python /usr/local/bin/python .... и т.д.

в моем .bashrc файле, я просто export PATH=/usr/local/bin:/usr/bin:$PATH, когда я хочу больше /usr/local/bin приоритета

или вы по-прежнему может работать как

/usr/bin/python yourpython.py 

или

/usr/local/bin/python yourpython.py 

зависит от питона установки местоположения

только мои 2 цента. извините, если мой ответ не поможет вам.

+0

Ничего. В mac, когда я делаю «какой python», он возвращает тот путь, на который ссылается «python». Если вы можете сказать мне, как изменить ссылку, я буду очень благодарен. – Jim

0

'питона' в Mac это просто ссылка. Сделайте «какой python», «cd» в каталог, в котором находится «python», а затем выполните «ls -a py *». Вы увидите, где тоже указывает питон. Если вы хотите, чтобы python указывал на вашу другую версию python, просто привяжите ее к правильной версии.

Смежные вопросы