2010-06-01 13 views
12

yerine Python standart kitaplığından içe aktarım modülü PYTHONPATH dizinimdeki dizinlerden birinde standart kitaplık modüllerinden birinin adıyla özel bir modül var, böylece bu modül import module_name olduğunda, bu modül yüklenir. Orijinal standart kütüphane modülünü kullanmak istersem, Python'u PYTHONPATH dizini yerine standart kütüphaneden almayı, özel modülü yeniden adlandırmayı ve her ismin yeni isme işaret etmesini sağlamayı zorlaştırmanın bir yolu var mı?PythonPATH varsayılan

+0

Modülünüzü yeniden adlandırırken ne denli kötü? –

+0

Sadece düzinelerce dosya üzerinde değişiklik yapmayı gerektirir. Yine de en iyi çözüm gibi geliyor. – jrdioko

+0

"grep" 'iniz var, bu yüzden her birini bulmak ve düzeltmek çok zor olmamalı. –

cevap

11

ideal çözüm standart kütüphanede değil bir şey için modül adlandırmak olacaktır.

Ayrıca switch absolute imports on Eğer Python 2.5 + iseniz edebilirsiniz:

from __future__ import absolute_import 
+0

Standart kitaplık sürümünü almak için göreceli ithalatı nasıl kullanırım? – jrdioko

+0

Sorunuzu yanlış anladım, düzenlenmiş cevap. –

+0

Bu aslında yardımcı olmaz mı? –

5

Sen imp modülü ile almak istediğiniz modülü seçebilirsiniz:

import imp 
mymodule = imp.load_module(name, file, pathname, description) 
9

etmeyin.

Yanlışlıkla standart bir kitaplık modülü adı seçtiyseniz, çakışmayı sonlandırmak için modül adınızı değiştirin.

/home/me/myproject

birine myproject dizine sembolik bir bağlantı yapın:

+0

Her ikisi de, ziyaret kodlayıcılarında karışıklığa neden olmamak için en iyi çözümdür ve göreceli olarak içe aktarılmayan bir modülü içe aktarma davranışının, mutlak ithalatla açılmadan değişmeyeceği gerçeği. –

-1

Bunu yapmanın en iyi yolu, en "myproject" üzerinde kalacak, diyelim bir dizinde Projenizi koymaktır Örneğin varsayılan piton yolları,: Artık istediğinizde

# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject

Projenizde bir modül almak için sadece bir python yorumlayıcısı açın.

>>> from myproject.mymodule import *

Bir cazibe gibi çalışır.

Son bir şey, projenizi python yolunda bulunanlarla aynı şekilde adlandırma, böylece içe aktarırken sorun yaşamayacaksınız.

+0

"PYTHONPATH" kullanmak daha iyi bir yol olurdu. Ayrıca statik analiz araçlarını karıştırdığı ve bir değişkenin nereden geldiğini anlaması zorlaştığı için 'x import *' yöntemini kullanmayın. – bfontaine

İlgili konular