当我尝试构建 conda 包时出现一个奇怪的错误。
$ conda-build pkg2
....
Found conflicts! Looking for incompatible packages.
This can take several minutes. Press CTRL-C to abort.
failed
....
The following specifications were found to be incompatible with your system:
- feature:/linux-64::__glibc==2.17=0
- feature:|@/linux-64::__glibc==2.17=0
- pkg1 -> __glibc[version='>=2.17,<3.0.a0']
Your installed version is: 2.17
Run Code Online (Sandbox Code Playgroud)
在我看来,它似乎glibc 2.17满足所有三个要求,但 conda 认为存在冲突。
澄清pkg2一下,取决于我在本地构建的另一个包,pkg1. pkg1是一个带有 python 接口的 C++ 库,它依赖于libfftw. 我libfftw在 conda 上找不到,所以必须通过 yum 在构建主机上安装它,它运行 CentOS7 glibc 2.17,因此依赖。
在pkg1 …
我有一个具有一类__eq__和__hash__重写,使其对象作为字典键.每个对象还带有一个字典,由同一类的其他对象键入.AttributeError当我尝试deepcopy整个结构时,我感到很奇怪.我在OsX上使用Python 3.6.0.
从Python文档看起来好像deepcopy使用memo字典来缓存它已经复制的对象,所以嵌套结构应该不是问题.那我做错了什么?我应该编写自己的__deepcopy__方法来解决这个问题吗?怎么样?
from copy import deepcopy
class Node:
def __init__(self, p_id):
self.id = p_id
self.edge_dict = {}
self.degree = 0
def __eq__(self, other):
return self.id == other.id
def __hash__(self):
return hash(self.id)
def add_edge(self, p_node, p_data):
if p_node not in self.edge_dict:
self.edge_dict[p_node] = p_data
self.degree += 1
return True
else:
return False
if __name__ == '__main__':
node1 = Node(1)
node2 = Node(2)
node1.add_edge(node2, "1->2") …Run Code Online (Sandbox Code Playgroud)