3

Я запускаю некоторые скрипты Python на сервере, они находятся в репозитории cvs и по разным причинам используют абсолютные пути.

Я пытаюсь использовать eclipse в качестве редактора - я проверяю проекты, но при их запуске я обнаруживаю, что файлы находятся не там, где их ожидает код. («/home/staff/root/analysis/test.txt», а не «../test.txt», например)

Есть ли способ заставить затмение обмануть питона, думая, что существует другая структура каталогов? Если бы я сделал глобальный поиск / замену '/ home / staff / root / analysis /' на '..', это бы сработало, но это не похоже на гуру ...

есть идеи?

2 ответа2

1

У меня нет ответа на ваш вопрос в самом узком смысле. У меня есть два предложения, которые могут достичь той же цели.

Предложение 1: Симлинк

Если файловые зависимости основаны на общем дереве (или небольшом количестве деревьев), вы можете создать символическую ссылку на соответствующие файлы. Итак, предположим, что вы хотите, чтобы /home/staff/root/analysis/test.txt разрешил /path/to/working/directory/test.txt, тогда вы можете сделать это:

$ sudo ln -fns /path/to/working/directory /home/staff/root/analysis 

Это требует прав суперпользователя. В результате весь префикс пути /home /staff /root /analysis преобразуется в каталог /path /to /working /. Это относится к файлам сразу под префиксом, а также ко всем подкаталогам.

Предложение 2: Поддержка параметров конфигурации для зависимостей во время выполнения

Если файлы действительно требуются для выполнения или тестирования, они должны быть частью пакета. Точное описание того, как это сделать, выходит за рамки этого ответа, но вот некоторые ресурсы, о которых вы, возможно, уже хорошо знаете:

  • Эксперт по программированию на Python http://goo.gl/YoDx6
  • Используйте SafeConfigParser для анализа файлов conf/ini (например, data-dir =/home/staff/root/analysis)
  • Используйте argparse, чтобы получить параметры из командной строки / переопределить conf (например, --data-dir = ..)
0

Если вы хотите изменить жестко запрограммированные относительные пути на абсолютные, вы всегда можете редактировать текст любым редактором (sed), но я сомневаюсь, что это то, что вам действительно нужно.

Вероятно, проблема в том, что вы не находитесь в каталоге, в котором инструмент ожидает вас при запуске чего-либо, простой os.chdir должен позволить вам это изменить.

Если нет, следуйте совету Риса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .