如何使用Anaconda版本的Python执行Python脚本?

34

我最近下载了Python的Anaconda发行版。我发现,如果我编写并执行一个Python脚本(双击其图标),我的电脑(运行Windows 8)将使用旧版本的Python而不是Anaconda的版本来执行它。因此,例如,如果我的脚本包含import matplotlib,我将收到一个错误。有没有办法让我的脚本使用Anaconda的Python版本呢?

我知道我可以在命令提示符中打开Anaconda的Python版本并手动导入它,但我想设置一些东西,以便我只需双击.py文件,就会自动使用Anaconda的Python版本。


1
我相信这就是虚拟环境的用途。 - Josiah Ruddell
4
如果您使用Anaconda,应使用conda环境而不是virtualenv。 - asmeurer
9个回答

13

我知道这已经过时了,但是这里的任何答案都不是一个真正的解决方案,如果你想双击Python文件并且希望使用正确的解释器而不必每次都修改你的PYTHONPATHPATH。当然,在命令行中,activate my-environment可以工作,但是OP特别询问了双击的情况。

在这种情况下,正确的做法是使用Windows的Python启动器。然后,你只需将#! path\to\interpreter\python.exe添加到你的脚本的顶部即可。 不幸的是,尽管启动器随Python 3.3+标准提供,但它未包括在Anaconda中(参见Python和Windows:Python启动器在哪里?),最简单的方法是从这里单独安装。


9

将您的Python路径设置为Anaconda版本

Windows有一个内置的对话框用于更改环境变量(以下指南适用于XP经典视图):右键单击您的计算机图标(通常位于桌面上,称为“我的电脑”),然后选择“属性”。然后,打开“高级”选项卡,并单击“环境变量”按钮。

简而言之,您的路径是:

我的电脑 ‣ 属性 ‣ 高级 ‣ 环境变量 在此对话框中,您可以添加或修改用户和系统变量。要更改系统变量,您需要对计算机进行非限制性访问(即管理员权限)。

找到您的PATH变量并添加Anaconda目录的位置。

这里有一个人执行此操作的示例:如何在Windows中添加PYTHONPATH,以便找到我的模块/包? 但请确保将子路径替换为Anaconda文件。


我也做了这件事。好消息是,当我在命令提示符中键入“python”时,Anaconda 版本的 Python 会出现。坏消息是,双击 .py 文件仍然会打开旧版本的 Python。 - Alessandro Power
1
由于 .py 的默认应用程序是旧版 Python,需要将默认应用程序更改为 Anaconda 版本的 Python,并重新启动计算机,这样应该就可以正常工作了。 - Ludovic Viaud
1
我确实更改了.py的默认应用程序,甚至重新启动了计算机。除此之外,我还在环境变量中创建了一个新的PythonPath变量。不幸的是,它并没有起作用。 - Alessandro Power
@Marsh:好的,有一些小进展。我不确定你的帖子是否暗示了这一点,但我决定将Anaconda库的路径添加到PythonPath中,而不是Anaconda的python.exe文件的路径。具体来说,我创建了一个PythonPath变量,变量值为C:\Users\Alessandro\Anaconda3\Lib\site-packages\。我仍然会遇到错误,但现在的错误与之前不同,我想这算是进步了。当我尝试运行我的脚本时,它会显示:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。(还有一些其他的东西,在这个评论中无法放下)。 - Alessandro Power
是的,那就是我的意思。尝试仅更改PythonPath变量为Anaconda exe,然后添加Anaconda库和Python库的路径,以便它可以找到所有内容。 - marsh
“Find your PATH variable and it to the location of your Anaconda directory.” 这句话中是否缺少一个单词?我猜应该是说“...并将其添加到您的Anaconda目录位置...”,但我想确定答案。 - Winston Smith

7

官方Python文档中的指令对我有效:https://docs.python.org/2/using/windows.html#executing-scripts

  1. Launch a command prompt.

  2. Associate the correct file group with .py scripts:

    assoc .py=Python.File
    

将所有的Python文件重定向到新的可执行文件:

    ftype Python.File=C:\Path\to\pythonw.exe "%1" %*

该示例展示了如何将.py扩展名与.pyw可执行文件相关联,但如果您想将.py扩展名与Anaconda Python可执行文件相关联,则也可以使用此方法。您需要管理员权限。名称“Python.File”可以是任何名称,您只需确保在ftype命令中使用相同的名称即可。完成后,在尝试双击.py文件之前,请确保在文件属性中更改“打开方式”。文件类型现在将是“.py”,并且会使用Anaconda python.exe打开。

1
非常好用,谢谢。顺便提一下,如果在使用这些命令时收到“拒绝访问”错误,请以“管理员身份”打开命令提示符并重试。如果您启用了UAC,则必须执行此操作。 - Mike Clark

7

我喜欢使用Python 2的“裸机”版本来验证为其他人创建的脚本,而无需进行高级Python设置。但是,Anaconda和Python 3有很多不错的功能。为了在同一台计算机上同时使用这两个东西,我在我的Windows计算机上这样做,这使我能够轻松切换。

C:\Users>python --version
Python 2.7.11

C:\Users>conda create --name p3 python=3

C:\Users>conda info --envs
Using Anaconda Cloud api site https://api.anaconda.org
# conda environments:
#
p3                       C:\Anaconda3\envs\p3
root                  *  C:\Anaconda3

C:\Users>activate p3
Deactivating environment "C:\Anaconda3"...
Activating environment "C:\Anaconda3\envs\p3"...

[p3] C:\Users>python --version
Python 3.5.1 :: Continuum Analytics, Inc.

更多信息请参阅:http://conda.pydata.org/docs/test-drive.html


4

我知道这篇文章已经有些年头了,但最近我也遇到了同样的问题。然而,将Anaconda添加到PYTHONPATH并不能解决我的问题。以下内容才是解决方法:

  1. Added Anaconda to the PYTHONPATH and remove any other distribution of Python from any paths.
  2. Opened the command prompt and started python (Here I had to verify that it was indeed running under the Anaconda dist)
  3. Ran the following lines inside anaconda

    >>> import sys
    >>> sys.path
    ['','C:\\Anaconda','C:\\Anaconda\\Scripts','C:\\Anaconda\\python27.zip','C:\\Anaconda\\DLLs','C:\\Anaconda\\lib','C:\\Anaconda\\lib\\plat-win','C:\\Anaconda\\lib\\lib-tk','C:\\Anaconda\\lib\\site-packages','C:\\Anaconda\\lib\\site-packages\\PIL','C:\\Anaconda\\lib\\site-packages\\Sphinx-1.2.3-py2.7.egg','C:\\Anaconda\\lib\\site-packages\\win32', 'C:\\Anaconda\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda\\lib\\site-packages\\Pythonwin','C:\\Anaconda\\lib\\site-packages\\runipy-0.1.1-py2.7.egg','C:\\Anaconda\\lib\\site-packages\\setuptools-5.8-py2.7.egg']
    
  4. Copied the displayed path

  5. Within the script that I'm trying to execute on double click, changed the path to the previously copied one.

    import sys
    sys.path =['','C:\\Anaconda','C:\\Anaconda\\Scripts','C:\\Anaconda\\python27.zip','C:\\Anaconda\\DLLs','C:\\Anaconda\\lib','C:\\Anaconda\\lib\\plat-win','C:\\Anaconda\\lib\\lib-tk','C:\\Anaconda\\lib\\site-packages','C:\\Anaconda\\lib\\site-packages\\PIL','C:\\Anaconda\\lib\\site-packages\\Sphinx-1.2.3-py2.7.egg','C:\\Anaconda\\lib\\site-packages\\win32', 'C:\\Anaconda\\lib\\site-packages\\win32\\lib', 'C:\\Anaconda\\lib\\site-packages\\Pythonwin','C:\\Anaconda\\lib\\site-packages\\runipy-0.1.1-py2.7.egg','C:\\Anaconda\\lib\\site-packages\\setuptools-5.8-py2.7.egg']
    
  6. Changed the default application for the script to 'python'
做完这个步骤后,我的脚本可以在双击时工作。

1
这个解决方案并不能完美地回答问题,因为它将您的.py文件修改为.bat文件,但它能够实现相同的目的,所以我认为它可以帮助一些人。
要使用anaconda环境启动python脚本:将您的.py扩展名更改为.bat扩展名,并在脚本开头添加此命令行:
@echo off & call conda activate <env name> & python -x "%~f0" %* & goto :eof

它将启动一个.bat文件,该文件将激活您的conda环境并执行您的python脚本。这样您就可以拥有一个单个文件,可以将其复制/粘贴到任何位置,并只需双击即可启动它。
以下是“.bat”文件的内容示例:
@echo off & call conda activate my_environment & python -x "%~f0" %* & goto :eof
print("Hello World!")
input()
import pandas as pd
print('succes')
input()

希望这对一些人有所帮助!干杯。
注意: 如果anaconda不在您的PATH环境变量中,只需将conda activate替换为anaconda activate.bat文件的路径,它应该像这样C:\ProgramData\Anaconda3\Scripts\activate.bat。 您还可以将环境名称替换为其目录,通常是这样的:C:\Users\<用户名>\.conda\envs\<环境名称>

非常感谢这篇帖子,它帮助我找到了解决方案:

Python命令行-x选项


我没有@Ash显而易见的专业知识。但另一件可能有帮助的事情是查看Windows开始菜单的Spyder快捷方式的属性。我的Win10 PC上的目标字段包含以下文本字符串:"C:\ProgramData\Anaconda3\pythonw.exe C:\ProgramData\Anaconda3\cwp.py C:\ProgramData\Anaconda3 C:\ProgramData\Anaconda3\pythonw.exe C:\ProgramData\Anaconda3\Scripts\spyder-script.py"。我很想听听更有经验的人对模仿该模式从Windows cmd行运行其他Python脚本的想法。 - Marc B. Hankin

0

您可以尝试通过策略管理更改默认的.py程序。前往Windows,搜索regedit,右键单击它。然后以管理员身份运行。接着,您可以搜索关键词“python.exe”,并将Python27路径更改为您的Anaconda路径。


0

我不知道Windows 8,但你可能可以为特定的扩展名设置默认程序。例如,在Windows 7上,你可以右键点击 => 打开方式,然后选择你想要的程序并选择“将此程序用作默认程序”,或者你可以从路径中删除旧版本的Python并添加Anaconda的版本。


这是我尝试的第一件事,令人惊讶的是它没有起作用。 - Alessandro Power

0

我知道这是一个老问题,但仍然没有被接受的答案。

以下是我用来在特定的anaconda环境中通过双击启动python脚本的方法。

我在anaconda3文件夹中找到了一个非常有用的脚本cwp.py。它不会激活环境,但会将环境前缀添加到路径中。

您应该按照以下方式使用它:

python cwp.py PREFIX ARGS

所以实际上,假设您的anaconda安装在C:\Users\User\anaconda3,您的环境位于C:\Users\User\anaconda3\env\myenv,那么您需要在Windows快捷方式中将以下行作为目标写入:

C:\Users\User\anaconda3\pythonw.exe C:\Users\User\anaconda3\cwp.py C:\Users\User\anaconda3\env\myenv C:\Users\User\anaconda3\env\myenv\pythonw.exe path_to_your_script\your-script.py

双击快捷方式即可启动您的脚本!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接