【问题标题】:Conda: Downloading a package and updating itConda:下载包并更新它
【发布时间】:2017-06-05 20:38:04
【问题描述】:

使用 Python 2.7,我正在尝试从 Anaconda.org 下载一个包,将其版本号增加 0.1(即从 0.0 版到 0.1 版),然后将其重新上传到同一个 Anaconda 频道。我的代码保存在 .py 文件中,用于 Window 的 cmd 或 iPython

到目前为止,我的 .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 时,我遇到了完全相同的问题。

【问题讨论】:

    标签: python package conda


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多