Jak mogę znaleźć ścieżkę Pythona za pomocą Pythona?
Jak mogę dowiedzieć się, które katalogi są wymienione w zmiennej PYTHONPATH
mojego systemu, z poziomu skryptu Pythona (lub interaktywnej powłoki)?
9 answers
sys.path
może zawierać elementy, które nie znajdują się w zmiennej środowiskowej PYTHONPATH
. Aby bezpośrednio odpytywać zmienną, użyj:
import os
try:
user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
user_paths = []
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-08 00:41:43
Pewnie też byś tego chciał:
import sys
print(sys.path)
Lub jako jedna linijka z terminala:
python -c "import sys; print('\n'.join(sys.path))"
Caveat : Jeśli masz zainstalowanych kilka wersji Pythona, powinieneś użyć odpowiedniego polecenia python2
lub python3
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-10 22:07:36
Nie mogę edytować drugiej odpowiedzi. Ma niewielki błąd w tym, że jest tylko Windows. Bardziej ogólnym rozwiązaniem jest użycie systemu operacyjnego.sep jak poniżej:
Sys.path może zawierać elementy, które nie są konkretnie w zmiennej środowiskowej PYTHONPATH. Aby bezpośrednio odpytywać zmienną, użyj:
import os
os.environ['PYTHONPATH'].split(os.pathsep)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-13 21:06:34
PYTHONPATH jest zmienną środowiskową, której wartością jest lista katalogów. Po ustawieniu jest używany przez Pythona do wyszukiwania zaimportowanych modułów, wraz z innymi std. i katalogów bibliotek stron trzecich wymienionych w Pythonie " sys.ścieżka".
Jak każda inna zmienna środowiskowa, możesz ją wyeksportować w powłoce lub w~/.bashrc, patrz tutaj . Możesz odpytywać system operacyjny.environ ['PYTHONPATH'] dla jego wartości w Pythonie, jak pokazano poniżej:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
Jeśli zdefiniowano w powłoce jako
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
Wtedy result = >
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
ELSE result = >
PYTHONPATH is not defined
Aby ustawić PYTHONPATH na wiele ścieżek, zobacz tutaj .
Zauważ, że można dodać lub usunąć ścieżkę wyszukiwania za pomocą sys./ align = "left" / insert (), del lub remove () w czasie wykonywania, ale nie przez system operacyjny.environ[]. Przykład:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
Podsumowując, PYTHONPATH jest jednym ze sposobów określania ścieżek wyszukiwania Pythona dla importowanych modułów w sys./ align = "left" / Możesz również zastosować operacje listy bezpośrednio do sys.ścieżka bez pomocy PYTHONPATH.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-09 07:59:18
Działa w windows 10, zasadniczo identyczny z odpowiedzią vanuana, ale czystszy (zaczerpnięty skądś ,nie pamiętam gdzie..):
import sys
for p in sys.path:
print(p)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-16 04:29:15
Python mówi mi, gdzie mieszka, gdy wyświetla komunikat o błędzie:)
>>> import os
>>> os.environ['PYTHONPATH'].split(os.pathsep)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\martin\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'PYTHONPATH'
>>>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-21 14:03:45
Jeśli używasz conda, możesz uzyskać prefiks env używając os.environ["CONDA_PREFIX"]
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-07 11:08:07
import sys
for a in sys.path:
a.replace('\\\\','\\')
print(a)
Da wszystkie ścieżki gotowe do umieszczenia w oknach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-21 15:34:09
import subprocess
python_path = subprocess.check_output("which python", shell=True).strip()
python_path = python_path.decode('utf-8')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-18 08:55:58