Добавление пути к файлу в sys.path в python
У меня был файл example_file.py
Я хочу использовать это example_file.py
из разных файлов, поэтому я решил добавить example_file.py
в sys.path
и импортирование этого файла в другой файл для использования функциональных возможностей файла. Я открыл ipython
и сделал следующее
import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
И когда я попытался импортировать этот файл из другого пути каталога, как
import example_file
он работает нормально, но после того, как я вышел из ipython, я снова вошел в него и проверил sys.path
, здесь путь, который я добавил, отсутствует, поэтому кто-нибудь может сообщить мне, как добавить путь к sys.path постоянно в python
4 ответа
Есть несколько способов. Одним из самых простых является создание my-paths.pth
файл (как описано здесь). Это просто файл с расширением .pth
что вы положили в свою систему site-packages
каталог. В каждой строке файла вы помещаете одно имя каталога, поэтому вы можете вставить туда строку с /path/to/the/
и он добавит этот каталог к пути.
Вы также можете использовать переменную окружения PYTHONPATH, которая похожа на системную переменную PATH, но содержит каталоги, которые будут добавлены в sys.path
, Смотрите документацию.
Обратите внимание, что независимо от того, что вы делаете, sys.path
содержит каталоги, а не файлы. Вы не можете "добавить файл в sys.path
Msgstr "Вы всегда добавляете его каталог, а затем можете импортировать файл.
Этот способ сработал для меня:
добавив путь, который вам нравится:
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
проверка: вы можете запустить cmd 'export' и проверить вывод, или вы можете проверить его с помощью этого cmd:
python -c "import sys; print(sys.path)"
Другой способ приблизиться к этому — установить файл как отдельный модуль.
Создайте файл установщика, как показано ниже (с именем pysetup.py):
import setuptools
module_name = input("Enter module name: ")
setuptools.setup(
name=module_name,
py_modules=[module_name],
)
Затем вы можете установить этот установщик, используя себя с помощью
python pysetup.py install
Затем при появлении запроса введите
pysetup
.
Теперь, чтобы установить любой файл, вы можете ввести
python -m pysetup install
затем введите имя файла. Вы также можете заменить
install
с
develop
установить в режиме разработки и продолжить редактирование файла.
В одном из дистрибутивов windows в следующем файле:
<python_root_installation_directory>/python38._pth
есть следующие строки:
python38.zip
.
./lib
./lib/site-packages
# Uncomment to run site.main() automatically
#import site
Таким образом, с этим контентом получаются следующие результаты:
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
>>> import sys
>>> sys.path
['C:\\Program Files\\Applications\\python_3_8_2\\python38.zip', 'C:\\Program Files\\Applications\\python_3_8_2', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages']
Итак, после добавления этой строки в файл:
./lib/site-packages/win32ctypes
он присутствует в пути:
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
>>> import sys
>>> sys.path
['C:\\Program Files\\Applications\\python_3_8_2\\python38.zip', 'C:\\Program Files\\Applications\\python_3_8_2', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages', 'C:\\Program Files\\Applications\\python_3_8_2\\./lib/site-packages/win32ctypes']
Таким образом, вам не нужно, чтобы переменная присутствовала в системе, и вы все равно можете иметь эту функциональность. Недостатком будет то, что это зависит от конкретной установки, поэтому, если у вас есть 3 разных дистрибутива в вашей системе, это повлияет только на выбранную установку, в то время как
PYTHONPATH
повлияет на них всех одновременно.