Setiap kali saya menggunakan sys.path.append
, direktori baru akan ditambahkan. Namun, setelah saya menutup python, daftar akan kembali ke nilai sebelumnya (default?). Bagaimana cara menambahkan direktori secara permanen PYTHONPATH
?
sumber
Setiap kali saya menggunakan sys.path.append
, direktori baru akan ditambahkan. Namun, setelah saya menutup python, daftar akan kembali ke nilai sebelumnya (default?). Bagaimana cara menambahkan direktori secara permanen PYTHONPATH
?
Anda perlu menambahkan direktori baru Anda ke variabel lingkungan PYTHONPATH
, dipisahkan oleh titik dua dari konten sebelumnya. Dalam segala bentuk Unix, Anda dapat melakukannya dalam skrip startup yang sesuai dengan shell apa pun yang Anda gunakan ( .profile
atau apa pun, tergantung pada shell favorit Anda) dengan perintah yang, sekali lagi, tergantung pada shell yang dimaksud; di Windows, Anda dapat melakukannya melalui sistem GUI untuk tujuan tersebut.
superuser.com
mungkin merupakan tempat yang lebih baik untuk bertanya lebih lanjut, yaitu untuk rincian lebih lanjut jika Anda perlu spesifik tentang cara memperkaya variabel lingkungan di platform dan shell yang Anda pilih, karena itu sebenarnya bukan pertanyaan pemrograman.
Jika Anda menggunakan bash (pada distro Mac atau GNU / Linux), tambahkan ini ke
~/.bashrc
sumber
~/.bashrc
lalu jalankan,source ~/.bashrc
lihat stackoverflow.com/questions/2518127/…sudo su
di awal file .bashrc Anda. Posting ini setuju dengan saya. Di sistem saya, setidaknya, itu bahkan tidak perlu.Alih-alih memanipulasi
PYTHONPATH
Anda juga dapat membuat file konfigurasi jalur . Pertama cari tahu di direktori mana Python mencari informasi ini:Untuk beberapa alasan ini sepertinya tidak berfungsi di Python 2.7. Di sana Anda dapat menggunakan:
Kemudian buat
.pth
file di direktori yang berisi jalur yang ingin Anda tambahkan (buat direktori jika tidak ada).Sebagai contoh:
sumber
python -m site --user-site
dan(create the directory if it doesn't exist)
bagian adalah apa yang saya hilang untuk membuatnya bekerja.somelib.pth
? Jika tidak, ada tebakan mengapa ini tidak berhasil?Ini berfungsi pada Windows
Kemudian Anda akan dapat melihat semua modul dalam jalur tersebut dari skrip Anda.
sumber
Jika ada yang masih bingung - jika Anda menggunakan Mac, lakukan hal berikut:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
sumber
export
kuncinya adalah hal yang saya hilang !!!!, terangkat, terima kasih banyak!Anda bisa menambahkan path melalui file pythonrc Anda, yang secara default adalah ~ / .pythonrc di linux. yaitu.
Anda juga dapat mengatur
PYTHONPATH
variabel lingkungan, dalam file rc global, seperti~/.profile
pada mac atau linux, atau melalui Control Panel -> System -> tab Advanced -> Variabel Lingkungan di windows.sumber
Untuk memberikan sedikit penjelasan, Python akan secara otomatis membangun jalur pencariannya (seperti yang disebutkan di atas dan di sini ) menggunakan
site.py
skrip (biasanya terletak di sys.prefix +lib/python<version>/site-packages
jugalib/site-python
). Seseorang dapat memperoleh nilai sys.prefix:Script site.py kemudian menambahkan sejumlah direktori, tergantung pada platform, seperti
/usr/{lib,share}/python<version>/dist-packages
,/usr/local/lib/python<version>/dist-packages
ke jalur pencarian dan juga mencari jalur ini untuk<package>.pth
file konfigurasi yang berisi jalur pencarian tambahan khusus. Misalnya instal mudah memelihara koleksi paket yang diinstal yang ditambahkan ke file sistem tertentu misalnya di Ubuntu itu/usr/local/lib/python2.7/dist-packages/easy-install.pth
. Pada sistem tipikal ada banyak file .pth di sekitarnya yang dapat menjelaskan beberapa jalur tak terduga di sys.path:Jadi seseorang dapat membuat file .pth dan memasukkan direktori ini (termasuk sitedir seperti yang disebutkan di atas ). Ini tampaknya menjadi cara sebagian besar paket ditambahkan ke sys.path daripada menggunakan PYTHONPATH.
Catatan: Di OSX ada jalur pencarian tambahan khusus yang ditambahkan oleh site.py untuk 'framework builds' (tetapi tampaknya berfungsi untuk penggunaan baris perintah normal dari python):
/Library/Python/<version>/site-packages
(misalnya untuk Python2.7:)/Library/Python/2.7/site-packages/
yang merupakan tempat paket pihak ke-3 seharusnya digunakan untuk diinstal (lihat README di dir itu). Jadi seseorang dapat menambahkan file konfigurasi jalur di sana yang berisi jalur pencarian tambahan, misalnya membuat file bernama/Library/Python/2.7/site-packages/pip-usr-local.pth
yang berisi/usr/local/lib/python2.7/site-packages/
dan kemudian sistem python akan menambahkan path pencarian itu.sumber
Bagi saya itu berfungsi ketika saya mengubah
.bash_profile
file. Hanya mengubah.bashrc
file hanya berfungsi sampai saya me-restart shell.Untuk python 2.7 akan terlihat seperti:
di akhir
.bash_profile
file.sumber
Di linux Anda dapat membuat tautan simbolis dari paket Anda ke direktori PYTHONPATH tanpa harus berurusan dengan variabel lingkungan. Sesuatu seperti:
sumber
Menambahkan
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
ke ~ / .bashrc mungkin tidak berfungsi jikaPYTHONPATH
saat ini tidak ada (karena:
).Menambahkan hal di atas ke ~ / .bashrc saya berhasil di Ubuntu 16.04
sumber
echo PYTHONPATH
dan tidak ada yang muncul! itu berarti PYTHONPATH ini belum diinisialisasi, jadi saya hanya menempelkan baris iniexport PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
di~/.bashrc
file saya dansource ~/.bashrc
itu. Kemudian, ketika saya melakukan `echo $ PYTHONPATH` itu memberi saya:<PATH_TO_TF>/TensorFlow/models/research/object_detection
, Adakah saran jika saya telah melakukan sesuatu yang salah?export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, ketika Anda mengekspor PYTHONPATH untuk pertama kalinya Anda harus melakukannya tanpa${PYTHONPATH}:
bagian:<PATH_TO_TF>/TensorFlow/models/research/object_detection
dan menghapus ke-2export PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
. ada saran tentang itu, bagaimana cara memperbaikinya?Di MacOS, Alih-alih memberikan jalur ke perpustakaan tertentu. Memberikan path lengkap ke folder proyek root di
membuat hari saya, misalnya:
setelah ini lakukan:
sumber
Hanya untuk menambahkan jawaban awesomo, Anda juga dapat menambahkan baris itu ke
~/.bash_profile
atau~/.profile
sumber
.bash_profile
jika Anda menggunakan shell login, jika tidak gunakan.profile
Menambahkan jalur baru ke PYTHONPATH dilakukan secara manual dengan:
menambahkan path ke profil ~ / .bashrc Anda, di terminal dengan:
rekatkan yang berikut ke profil Anda
kemudian, pastikan untuk mencari sumber profil bashrc Anda ketika Anda menjalankan kode di terminal:
Semoga ini membantu.
sumber
Saya menambahkan secara permanen di Windows Vista, Python 3.5
Sistem> Panel Kontrol> Pengaturan sistem lanjutan> Lanjutan (ketuk) Variabel Lingkungan> Variabel sistem> (jika Anda tidak melihat PYTHONPATH di kolom Variabel) (klik) Baru> Nama variabel: PYTHONPATH> Nilai variabel:
Tolong, tulis direktori dalam nilai Variabel. Ini adalah detail dari jawaban Blue Peppers.
sumber
Script di bawah ini berfungsi pada semua platform karena ini adalah Python murni. Itu memanfaatkan PathLib path, didokumentasikan di sini https://docs.python.org/3/library/pathlib.html , untuk membuatnya bekerja lintas platform. Anda menjalankannya sekali, restart kernel dan hanya itu. Terinspirasi oleh https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .
sumber
Ini adalah pembaruan untuk utas ini yang memiliki beberapa jawaban lama.
Bagi mereka yang menggunakan MAC-OS Catalina atau yang lebih baru (> = 10.15), diperkenalkan Terminal baru bernama
zsh
(pengganti yang lamabash
).Saya punya beberapa masalah dengan jawaban di atas karena perubahan ini, dan saya agak melakukan solusi dengan membuat file
~/.zshrc
dan menempelkan direktori file ke$PATH
dan$PYTHONPATH
Jadi, pertama saya lakukan:
Ketika editor dibuka, saya menempelkan konten berikut:
menyimpannya, dan me-restart terminal.
PENTING: Jalur di atas diatur ke jalur komputer saya, Anda harus menyesuaikannya dengan python Anda.
sumber
Dalam Python 3.6.4 Anda dapat bertahan sys.path di sesi python seperti ini:
Saya sangat menyarankan Anda menggunakan virtualenv dan virtualenvwrapper kalau tidak Anda akan mengacaukan jalan Anda
sumber
Jalur terpendek antara A <-> B adalah garis lurus;
sumber