グローバル環境site-packgesを共有するvirtualenvが、グローバルTkを使用するTkベースのアプリケーションに使用される場合。
Tkinterは、リソースを正しく検索できないため、virtualenvで正しく初期化できません。リソースはまだグローバルPython環境にあります。
\Documents and Settings\Roger\Desktop\windows-install-bits>cd \venvtest
C:\venvtest>Scripts\activate.bat
(venvtest) C:\venvtest>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f= Tk()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Tk' is not defined
>>> f= Tkinter.Tk()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Python26\Lib\lib-tk\Tkinter.py", line 1643, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, want
objects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
c:/Python26/lib/tcl8.5 c:/venvtest/lib/tcl8.5 c:/lib/tcl8.5 c:/venvtest/libr
ary c:/library c:/tcl8.5.2/library c:/tcl8.5.2/library
This probably means that Tcl wasn't installed properly.
>>> ^Z
(venvtest) C:\venvtest>deactivate
私が期待するのは、仮想環境がグローバル環境と同じように機能することです。
C:\venvtest>c:\Python26\python.exe
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f = Tkinter.Tk()
>>> ^Z
C:\venvtest>
いくつかの実験の結果、c:\ python26 \ tcl {tcl、tk} 8.5ディレクトリをc:\ venvtest \ Libsにコピーすると問題が解決することがわかりました。
実際、これを修正するより良い方法は、TCL_LIBRARYパスをに設定することです。
activate.batを実行するか、FixTk.pyを変更してvirtualenvについて認識します。
Original Comment By: Roger Gammans
私も、activate.batで環境変数TCL_LIBRARYパスを設定しているだけです。 したがって、virtualenvが行う必要があるのは、その行を自動的にactivate.batに追加することだけです。
この問題についてもstackoverflowに関するスレッドがあります:
http://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv
また、activate.batで環境変数を設定するだけです。 ただし、これが自動的に行われると便利です。
virtualenv15.0.1ではまだ問題があります。
... 言ってるだけ'
この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 開いたままにしておきたい場合は、コメントを追加してください。 貢献していただきありがとうございます。
それはまだ問題のようです
この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 開いたままにしておきたい場合は、コメントを追加してください。 貢献していただきありがとうございます。
これはまだ問題です。 私は最近Macでそれをヒットしました-https://github.com/pypa/virtualenv/issues/93の修正はMacでの問題を解決しませんでした。
誰かがこの問題を再度アクティブにする必要があります。 何の牽引力も得られずに座っていたからといって、それがもはや問題ではないという意味ではありません。 これは、プロジェクトのメンテナが本来の優先順位を付けていないことを意味します。
Windowsでは、Python 2.7の問題はまだありますが、Python 3.8ではvenv
モジュールを使用して解決されているようです。
エラーメッセージ、複製手順、Pythonのインストール方法に関する情報を添えて、新しい問題を自由に提出してください。
これは、プロジェクトのメンテナが本来の優先順位を付けていないことを意味します。
プロジェクトのメンテナに報酬が支払われていないことを考えると、個人的な時間に無料でそれを行うと、 they should
について話すことができるとは思いません。 この問題が問題になる場合は、PRに修正を記入することを検討してください。 すべてのコードはオープンソースであり、自由に利用できます。
最も参考になるコメント
virtualenv15.0.1ではまだ問題があります。
... 言ってるだけ'