所以我要在Ubuntu 14.04机器上将所有工具从python2迁移到python3.4。到目前为止,我已经完成了以下工作:
mkvirtualenv --python=/usr/bin/python3
('workon'在下面以'v'的形式调用)现在奇怪的是,您可以在下面清楚地看到它,从virtualenv激活的环境运行python3仍然继承了我的$ PYTHONPATH,该$ PYTHONPATH仍然为我的所有python2路径设置。在我的virtualenv中安装/运行程序时,这会造成严重破坏,因为python3路径会在旧python2路径之后显示,因此python2模块会首先导入到我的程序中。在启动virtualenv之前将$ PYTHONPATH设置为''可以解决此问题,并且程序可以按预期启动。但是我的问题是:
○echo $ PYTHONPATH /usr/local/lib/python2.7/site-packages:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/home/ brian / dev brian @ zeus:〜/ .virtualenvs ○python2 Python 2.7.6(默认值,2014年3月22日,22:59:56) 在linux2上的[GCC 4.8.2] 键入“ help”,“ copyright”,“ credits”或“许可证”以获取更多信息。 >>>导入sys,pprint >>> pprint.pprint(sys.path) ['', '/ usr/local/lib/python2.7/dist-packages/pudb-2013.3.4- py2.7.egg ' , '/ usr/local/lib/python2.7/dist-packages/Pygments-1.6- py2.7.egg','/usr/local/lib/python2.7/dist-packages/urwid-1.1.1- py2。 usr/local/lib/python2.7/dist-packages/Pygments-1.6- '/usr/local/lib/python2.7/dist-packages/pythoscope-0.4.3- py2.7。 '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', 一个'/ home /布莱恩/ dev的', “/usr/lib/python2.7 ', '/ usr / lib / python2.7 / plat-x86_64-linux-gnu', '/ usr / lib / python2.7 / lib-tk', '/ usr / lib / python2.7 / lib-old' , '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gst-0.10 ', '/ usr / lib / python2.7 / dist-packages / gtk-2.0', '/ usr / lib / pymodules / python2.7', 。7 / dist-packages / ubuntu-sso-client', '/ usr / lib / python2.7 / dist-packages / ubuntuone-客户端”, “ / usr / lib / python2。7 / dist-packages / ubuntuone-storage-protocol', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode'] >>> brian @ zeus:〜/ .virtualenvs ○v py3venv (py3venv) brian @ zeus:〜/ .virtualenvs ○python3 Linux上的 Python 3.4.0(默认值,2014年4月11日,13:05:11)[GCC 4.8.2] 键入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。 >>>进口SYS,pprint >>> pprint.pprint(sys.path中) [ '', '/usr/local/lib/python2.7/site-packages', “/usr/local/lib/python2.7 / DIST-包, '/usr/lib/python2.7/dist-packages', '/home/brian/.virtualenvs/py3venv/lib/python3.4', '/home/brian/.virtualenvs/py3venv/lib/python3.4/plat-x86_64-linux-gnu', 一个“/ home /布赖恩/ .virtualenvs / py3venv / lib / python3.4 / lib-dynload', ' / usr / lib / python3.4',' / usr / lib / python3.4 / plat-x86_64-linux-gnu ', '/ home / brian / .virtualenvs / py3venv / lib / python3.4 / site-packages'] >>> (py3venv)
我偶然发现了有关$ PYTHONPATH的答案,它刚刚为我解决了这个问题。本质上,设置$ PYTHONPATH是可选的,对用户来说很方便。它应该只包含用户想要添加到其python路径的其他路径,这样用户就不必在python本身中执行此操作,而只是从终端运行脚本。
因此,为了解决上述问题,我将$ PYTHONPATH(在zshrc中)设置为仅其他文件夹“ $ HOME / dev”,而没有其他设置。这消除了我路径中对python2的引用,并且所有python3程序都按预期在我的virtualenv中启动。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句