2012-02-26 14 views
0

私はこれを追跡するのに少し問題があります。私が 'python -m site'を実行すると、virtualenvの下にいないときにsys.pathのディレクトリとその他のものが出力されて素敵な出力が得られます。私がvirtualenvに切り替えると出力はありません。私は簡単にhttps://github.com/pypa/virtualenv/blob/develop/virtualenv.pyの下のコードを見て、私はvirtualenvがそれ自身のsite.pyを作成するのを見ることができます - しかし、このモジュールはまだ__main__フックを持っており、私はインタプリタからそれをインポートし、 -mスイッチで実行しようとするとどういう違いがありますか?virtualenvの下にpython -m siteの出力がないのはなぜですか?

答えて

0

私はこの質問に幾分興味がありました。だから私はいくつかのハッキングをした。

最初に、私はprint(__name__)行を挿入して、のsite.pyをpythonライブラリディレクトリに変更しました。その結果、私は、単一の行print(__name__)でライブラリフォルダにファイルmymodule.pyを追加した、次

$ python -m site 
site 

ました。さて結果は

$ python -m mymodule 
site 
__main__ 

だったので、モジュールはpython -m siteコマンドの前に輸入されサイトがスクリプトとして、このモジュールを実行しますようです。スクリプト実行のためにもう一度やってしまうと、Pythonは二次的なインポートを省略します。

関連する問題