我正在尝试在Debian GNU / Linux 9上安装pyspider。尝试使用pip和pip3进行安装,检查了libevent-dev,libpython-dev,python-dev,distribution,ez_setup,但我仍然从pip收到以下消息/ pip3安装pyspider:
Command "python setup.py egg_info" failed with error code 1 in tmp/pip-build-<randomcharacters>/pycurl/
在该错误消息的正上方,它说:
__main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory: 'curl-config'
有什么想法吗?
答案 0 :(得分:1)
class Square {
constructor(name, cellsSize, mode, circleRadius, dragHandler, releaseHandler) {
if(!cellsSize){ return false;}
let x = (cellsSize/2)-circleRadius,
y = mode == 'BOTH' ? (cellsSize/2)-circleRadius : cellsSize - circleRadius;
this.value = "SATYA";
this.name = name;
this.pan = new Animated.ValueXY();
this.cellsSize = cellsSize;
this.mode = mode;
this.minXY = 0 - CIRCLE_RADIUS; // 50; //this.cellsSize * (0.5);
this.maxXY = cellsSize - CIRCLE_RADIUS; //this.cellsSize * (1.5);
this.halfW = cellsSize/2;
this.halfH = mode == 'BOTH' ? cellsSize/2 : 0;
this.finalX = 0;
this.finalY = 0;
this.constrainedX = this.pan.x.interpolate({
inputRange: [this.minXY, this.maxXY],
outputRange: [this.minXY, this.maxXY],
extrapolate: 'clamp',
});
this.constrainedY = this.pan.y.interpolate({
inputRange: [this.minXY, this.maxXY],
outputRange: [this.minXY, this.maxXY],
extrapolate: 'clamp',
});
this.pan.setValue({ x, y });
this.panResponder = this._buildPanResponder();
this.dragCallback = dragHandler;
this.releaseCallback = releaseHandler;
}
get valueString() { return "ijkl"; }
get panRef() { return this.pan; }
get panResponderRef() { return this.panResponder; }
dragHandler(gesture, event) {
const{ nativeEvent } = event;
const{ halfW, halfH, cellsSize, mode } = this;
let finalX = 0, finalY = 0, normalizedX = 0, normalizedY = 0, dirX = 1, dirY = 1;
dirX = gesture.dx > 0 ? 1 : -1;
dirY = gesture.dy > 0 ? 1 : -1;
if( mode == 'BOTH' || mode == 'X'){ //Locked X axis
normalizedX = Math.abs(gesture.dx) > halfW ? ( dirX*halfW ) : gesture.dx;
finalX = halfW+normalizedX;
finalX = Math.round(finalX*100)/100;
}
if(mode == 'BOTH' || mode == 'Y'){ // Locked Y axis
normalizedY = Math.abs(gesture.dy) > halfH ? ( dirY*halfH ) : gesture.dy;
finalY = cellsSize - (halfH+normalizedY);
finalY = Math.round(finalY*100)/100;
}
if( mode == 'X' || mode == 'FREE' ){ //Free Y axis
normalizedY = gesture.dy;
finalY = (halfH+normalizedY) > cellsSize ? dirY*cellsSize : (halfH+normalizedY);
finalY = (Math.abs(finalY) > cellsSize) ? dirY*cellsSize : finalY; // Cap the top end to max
finalY = (finalY > 0) ? 0 : finalY; // Cap the bottom to min
finalY = Math.round(finalY*100)/100;
}
this.finalX = finalX;
this.finalY = finalY;
this.dragCallback({
name: this.name,
x: toFixed(this.finalX/cellsSize, true),
y: toFixed(this.finalY/cellsSize, true)
});
return;
}
releaseHandler(gesture, event) {
const { dy } = gesture;
const { cellsSize } = this;
if(this.mode === 'X'){
// is it up
if( dy < 0 ){
this.halfH = (this.halfH + gesture.dy);
if ( Math.abs(this.halfH) > cellsSize) {
this.halfH = -1 * cellsSize;
}
}
if( dy > 0 ){
if(Math.abs(this.halfH) < dy){
this.halfH = 0; //move to ground
} else {
this.halfH = this.halfH + dy;
}
}
}
if(this.mode == 'BOTH'){
this.finalX = (cellsSize/2); ///cellsSize;
this.finalY = (cellsSize/2); ///cellsSize;
}
if(this.mode == 'X'){
this.finalX = (cellsSize/2); ///cellsSize;
this.finalY = this.finalY;
}
this.releaseCallback({
name: this.name,
x: toFixed(this.finalX/cellsSize, true),
y: toFixed(this.finalY/cellsSize, true)
});
// console.log(this.halfH);
}
_buildPanResponder() {
return PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderGrant: (event, gestureState) => {
this.pan.setOffset({ x: this.pan.x._value, y: this.pan.y._value });
},
onPanResponderMove: Animated.event([null,
{ //Step 3
dx : this.pan.x,
dy : this.pan.y
}]
,{ listener: (e, gesture) => { this.dragHandler(gesture, e); } }
),
onPanResponderRelease: (event, gesture) => {
const { dy } = gesture;
const { halfH, cellsSize, mode } = this;
if(mode == 'BOTH'){
this.pan.setValue({
x: 0,
y: 0
});
}else{
let value = dy;
if(dy < 0){
value = (Math.abs(this.halfH+gesture.dy) > this.cellsSize) ?
(Math.abs(halfH + dy) - cellsSize) - Math.abs(dy) :
dy;
}
if( dy > 0 ){
if(Math.abs(this.halfH) < dy){
value = Math.abs(this.halfH);
} else {
value = dy;
}
}
this.pan.setValue({
x: 0,
y: value
});
}
this.pan.flattenOffset();
this.releaseHandler(gesture, event);
}
});
}
}
https://i.stack.imgur.com/bb3vf.png,后者依次为requires pycurl
。因此,请先安装requires libcurl
:
pyspider