2016-10-31 4 views
0

私のコード(pip3と一緒にインストールされた)のライブラリモジュールとしてhttps://github.com/sciunto/python-bibtexparserを使用しています。したがって、私はモジュールへの書き込みアクセス権を持っていません。モジュールに定義されているpython3セットにアクセスして更新します。

standard_typesで定義されているように、使用するセットはかなり限定されています。https://github.com/sciunto/python-bibtexparser/blob/master/bibtexparser/bibdatabase.pyです。

呼び出しコードからセットを再定義/追加することは可能ですか?例えば

#foo.py 
import bibtexparser 

#redefine standard_types 
bibtexparser.STANDARD_TYPES = set([the complete set I need]) 

#or append the standard_types 
bibtexparser.STANDARD_TYPES.update = set([append to the set]) 

更新:実際には、変数STANDARD_TYPESにアクセスできません。私がやろうとしています:降伏さ

from bibtexparser import bibdatabase as bd 

class Window(Gtk.ApplicationWindow): 
    def __init__(self, application, giofile=None): 
     Gtk.ApplicationWindow.__init__(self, 
             application=application, 
             default_width=1000, 
             default_height=200, 
             border_width=5) 


     print(bd) 
     print(bd.STANDARD_TYPES) 

を:

<module 'bibtexparser.bibdatabase' from '/usr/lib/python3.5/site-packages/bibtexparser/bibdatabase.py'> 
...... 
     print(bd.STANDARD_TYPES) 
    AttributeError: module 'bibtexparser.bibdatabase' has no attribute 'STANDARD_TYPES' 
+0

おそらく。それを試してみてください!追加するには '| ='演算子を使います。 – wim

答えて

0

あなたはそれを置き換えることはできませんので、パッケージの他の部分は、from bibtextparser import STANDARD_TYPESを行うように見えます。既にインポートしたモジュールは古いバージョンを保持します。言っ

bibtexparser.STANDARD_TYPES.update({append to the set}) 

BibTexParserはそれignore_nonstandard_types=Trueを渡して初期化することができるように見える、と言っても、あなたが本当に欲しい、おそらく何である、STANDARD_TYPESをチェックしません。:updateを使用すると、あなたの構文を修正する必要があるものの正常に動作しますそれはまったくハッキーなサルパッチを伴わない。

+0

こんにちは、お返事ありがとうございます。しかし、私が 'bibtexparser.bibdatabase import STANDARD_TYPES'を行っている場合、そのエラーを表示しています: ' print(bibtexparser.STANDARD_TYPES) AttributeError:モジュール 'bibtexparser'には属性 'STANDARD_TYPES''がありません – BaRud

+0

私はどのようにアクセスできますか?値? – BaRud

+0

@BaRud: 'from x import y'構文を使用しました。名前を修飾しないでください。 'print(STANDARD_TYPES)'が動作します。 – ShadowRanger

関連する問題