Страниц: [1]
  Печать  
Автор Тема: Python 2.7.3 под QNX 6.5.0 (проблема переноса)  (Прочитано 3730 раз)
NeTomat
Участник
*
Offline Offline

Сообщений: 33


Просмотр профиля
« : Октября 12, 2012, 03:17:13 pm »

Добрый день!

Собираю интерпретатор python под QNX на одной машине указывая папку установки, а потом переношу эту папку целиком на другую машину
./configure --prefix=/usr/python
make install clean


Проблема в том, что на той машине где собирал все запускается и работает замечательно, а на другой при запуске питона вываливается:
# /usr/python/bin/python
Traceback (most recent call last):
  File "/usr/python/lib/python2.7/site.py", line 563, in <module>
    main()
  File "/usr/python/lib/python2.7/site.py", line 545, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/python/lib/python2.7/site.py", line 278, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/python/lib/python2.7/site.py", line 253, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/python/lib/python2.7/site.py", line 242, in getuserbase
    from sysconfig import get_config_var
  File "/usr/python/lib/python2.7/sysconfig.py", line 104, in <module>
    _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
  File "/usr/python/lib/python2.7/sysconfig.py", line 99, in _safe_realpath
    return realpath(path)
  File "/usr/python/lib/python2.7/posixpath.py", line 367, in realpath
    resolved = _resolve_link(component)
  File "/usr/python/lib/python2.7/posixpath.py", line 384, in _resolve_link
    while islink(path):
  File "/usr/python/lib/python2.7/posixpath.py", line 133, in islink
    st = os.lstat(path)
TypeError: must be encoded string without NULL bytes, not str


Образа систем сильно различаются, но как найти именно то, что вызывает подобные ошибки, мне не понятно Sad
Искал и в гуле и яндексе и здесь, ни как понять не могу, в чем может быть проблема
подскажите пожалуйста, куда смотреть, на что обращать внимание? как можно исправить?
« Последнее редактирование: Октября 12, 2012, 03:21:32 pm от NeTomat » Записан
hv
Участник
*
Offline Offline

Сообщений: 2


Просмотр профиля
« Ответ #1 : Января 24, 2013, 08:45:12 pm »

Лучше поздно, чем никогда Wink

При сборке\установке искаропки пайтон создает огромное количество симлинков, которые тоже надо переносить.

Способ 1: В лоб,
  • Составляешь список всех файлов в системе включая симлинки (игноря /dev, /tmp... ну ты знаешь).
  • Сетапишь пайтон
  • Составляешь второй список всех файлов в системе
  • Отсортировываешь списки в лексикографическом порядке и делаешь их дифф
  • ...
  • ПРОФИТ
Сам так делал, пока не отпала надобность.

Способ 2: создать виртуальную среду с пайтаном
http://pypi.python.org/pypi/virtualenv тебе в помощь.
Профит - все в одной папке, для переноса в ембендед например.
Мной под QNX не проверялся, но сработать может

Способ 3: Воспользоваться pyinstaller или cx-freeze.
pyinstaller мне не удалось заставить работать, cx-freez не пробовал.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #2 : Января 24, 2013, 09:47:37 pm »

make DESTDIR=/tmp/somedir install
в папке /tmp/somedir будет готовое дерево инсталляции питона со всеми правильными путями и линками. Запаковываем его и распаковываем на другой машине, и всё будет работать.
Записан

Страниц: [1]
  Печать  
 
Перейти в: