康达:下载一个软件包并更新我

2024-04-29 20:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python2.7,我尝试从Anaconda.org,将其版本号增加0.1(即从0.0版增加到0.1版),然后将其重新上载到同一Anaconda频道。我的代码保存在窗口的cmd或iPython中使用的.py文件中

到目前为止,在我的.py文件中,我有:

import sys, subprocess, conda

# Search for the package
search = subprocess.check_output(['conda', 'search', 'gladio'])

# Take version number from package
v = [int(s) for s in search.split() if s.isdigit()]

# Update with new version number
v = v[0] + 1
print 'New version number is 0.%s' % v

# Set new commands as strings
pack = '''!conda package -p C:\Users\Ian\Anaconda\gladio --pkg-name gladio -
       -pkg-ver 0.%s''' % v
load = '!anaconda upload gladio0.%s-0.tar.bz2' % v

# Execute strings
exec pack
exec load

但是我在终端上得到了这样的回应:

New version number is 0.1
  File "<string>", line 1
    !conda package -p C:\Users\Ian\Anaconda\gladio --pkg-name gladi...
    ^
SyntaxError: invalid syntax

但是,如果我将原始文本复制并粘贴到iPython中,它就会工作。

删除感叹号时,我得到:

conda package -p C:\Users\Ian\Anaconda\gladio --pkg-name gladi...
            ^
SyntaxError: invalid syntax

我也试过换衣服

eval pack
eval load

或者

eval $pack
eval $load

没有运气。我还试图定义一个“pack”和一个“load”,但我得到了相同的语法错误。我知道我应该避免使用exec和eval函数,但我不知道该怎么做。我在使用Window的cmd、Spyder或iPython时遇到了完全相同的问题。你知道吗


Tags: namenumberpackagesearchversionipythonevalload
1条回答
网友
1楼 · 发布于 2024-04-29 20:21:44

这是因为感叹号! code here语法在IPython(和Jupyter笔记本)中作为一种运行shell命令的方法是有效的。但是,对于在CMD中键入python script_name.py时运行的常规(常规)Python解释器,它的语法无效。虽然没有很好的文献记载,但是有conda.cli.python_apiconda.exports。您可以在这里找到前者的代码:https://github.com/conda/conda/blob/master/conda/cli/python_api.py

相关问题 更多 >