Eclipse dan python ... masalah jalur

3

Saya menjalankan beberapa skrip python di server, mereka berada di bawah repositori cvs dan, karena berbagai alasan menggunakan nama path absolut.

Saya mencoba menggunakan eclipse sebagai editor - saya memeriksa proyek, tetapi ketika menjalankannya saya menemukan bahwa file-file tersebut tidak sesuai dengan kode yang diharapkan. ('/ home/staff/root/analysis/test.txt' daripada '../test.txt' misalnya)

Apakah ada cara untuk membuat gerhana untuk menipu python agar berpikir ada struktur direktori yang berbeda? Jika saya melakukan global find / replace '/ home / staff / root / analysis /' for '..' yang akan melakukan trik, tetapi tidak tampak seperti guru ...

ada ide?

Joe
sumber

Jawaban:

1

Saya tidak punya jawaban untuk pertanyaan Anda dalam arti sempit. Saya punya dua saran yang dapat mencapai tujuan yang sama.

Saran 1: Simbol

Jika dependensi file di-root di pohon umum (atau sejumlah kecil pohon), Anda mungkin dapat membuat symlink ke file yang sesuai. Jadi, katakanlah Anda ingin /home/staff/root/analysis/test.txt untuk menyelesaikan ke /path/to/working/directory/test.txt, maka Anda bisa melakukan ini:

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

Ini membutuhkan hak akses root. Efeknya adalah bahwa seluruh awalan jalur / home / staff / root / analisis akan diselesaikan ke / path / ke / working / direktori. Ini berlaku untuk file segera di bawah awalan serta semua subdirektori.

Saran 2: Mendukung opsi konfigurasi untuk dependensi runtime

Jika file benar-benar diperlukan untuk runtime atau pengujian, mereka harus menjadi bagian dari paket. Menjelaskan dengan tepat bagaimana melakukan ini adalah di luar ruang lingkup dari jawaban ini, tetapi di sini ada beberapa sumber, yang mungkin sudah Anda sadari:

  • Pemrograman Python Pakar http://goo.gl/YoDx6
  • Gunakan SafeConfigParser untuk mem-parsing file conf / ini (mis. Data-dir = / home / staff / root / analysis)
  • Gunakan argparse untuk mendapatkan opsi dari command line / override conf (mis. --Data-dir = ..)
Reece
sumber
OP tidak merinci apa "berbagai alasan" untuk jalur hardcode, tetapi menyingkirkannya (Saran 2) jelas merupakan cara yang lebih baik untuk menggunakan IMHO.
martineau
0

Jika Anda ingin mengubah jalur relatif berkode keras menjadi jalur absolut, Anda selalu dapat mengedit teks dengan editor apa pun (sed) tetapi saya ragu itu yang benar-benar Anda butuhkan.

Mungkin masalahnya adalah Anda tidak berada di direktori yang diharapkan oleh alat saat menjalankan sesuatu, os.chdir sederhana seharusnya memungkinkan Anda untuk mengubahnya.

Jika tidak mengikuti saran Reece.

estani
sumber