我是 Python 新手。我在 Ubuntu 上使用 Anaconda 4.1.1 (Python 3.5.2) 发行版。我开始从事一个使用 cx_Oracle
的项目. O 当然可以使用 pip
安装 cx_Oracle
。
pip install cx_Oracle
但似乎每个人都在说 Anaconda 的 conda
是比 pip
和 virtualenv
更好的包管理器、虚拟环境管理器和依赖管理器> 放在一起。我更愿意只使用 conda
来管理所有内容。
所以我制作了一个包含以下行的 requirements.txt
文件(我的一些队友仍将使用 pip
和 virtualenv
)。 (我要支持Python 3.5,所以需要cx_Oracle
5.2.1,目前最新的。)
cx_Oracle==5.2.1
然后我告诉 conda
创建一个虚拟环境 foobar
:
conda create -n foobar --file requirements.txt
这失败了;不幸的是 cx_Oracle
5.2.1 尚未在 Continuum conda 存储库中(尽管自发布以来已经过去了半年)。然而,有几个 channel (例如 mgckind
)声称提供 5.2.1 版。只有一个问题:所有 channel 都提供 cx_oracle
而不是 cx_Oracle
(注意大小写差异)。所以这行不通:
conda create -n foobar -c mgckind --file requirements.txt
即使我在上面的例子中指定了一个 channel ,即使 requirements.txt
清楚地写着 cx_Oracle
,conda
也会降低 cx_oracle
带有小写的 o
。因为 Python 模块导入显然区分大小写,所以我的所有测试都失败了,因为它们找不到带有大写 O
的 cx_Oracle
。
我是不是因为我是 Python 新手而错过了一些简单的东西?还是 Anaconda 真的落后于时代并且与 cx_Oracle
不兼容,这意味着我将不得不使用 pip install
并将其从 PyPI 中下载下来?
如果真的存在大小写差异,这种情况在 Conda 和 PiPY 上是否常见?仅以小写字母命名事物是 Conda 政策吗?其他人如何处理差异?
最佳答案
conda 包名称不会影响您在 python 中导入
代码的方式。查看 linux-64 包 here例如,虽然包名称是 cx_oracle
以符合 conda 生态系统标准,但在 python 中,您必须使用 import cx_Oracle
导入该包。 PyPI 上有许多 python 包的示例,其中包名称与在 python 代码中导入包的方式不同。我猜这只是 Python 的怪癖之一。
关于python - 使用 conda 获取大小写正确的 cx_Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420508/