2012-11-27 16 views
17

Trên Windows 7, khi cố gắng biên dịch pygraphviz, tôi chạyBiên soạn pygraphviz: tùy chọn dòng lệnh không được nhận '-mno-Cygwin'

python setup.py build -c mingw32 

tôi nhận được

C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-IC:\Program Files (x86)\Graphv iz 2.28\include\graphviz" -Ic:\Python27\include -Ic:\Python27\PC -c pygraphviz/g raphviz_wrap.c -o build\temp.win-amd64-2.7\Release\pygraphviz\graphviz_wrap.o cc1.exe: error: unrecognized command line option '-mno-cygwin' error: command 'gcc' failed with exit status 1

ở đâu đó -mno -cygwin 'đến từ đâu? Nhìn kỹ qua thư mục pygraphviz-1.1 cho thấy không có sự xuất hiện của "no-cygwin".

Trả lời

18

Xem câu trả lời này: https://stackoverflow.com/a/6035864/1516291

Nói tóm lại, bạn có thể cần phải sửa đổi distutils\cygwinccompiler.py trong python cài đặt dir của bạn để loại bỏ các dấu vết của -mno-cygwin.

+1

Điều quan trọng cần lưu ý là tùy chọn này tồn tại trong tệp setup.py của một vài gói, chẳng hạn như 'pip install cx_Oracle', chẳng hạn, sẽ không thành công với cùng một thông báo. Tệp nguồn cần được tải xuống để setup.py có thể được chỉnh sửa. – foszter

3

tôi đã cùng một vấn đề đã được cố định bằng cách thay thế các trường hợp của chuỗi "-mno-Cygwin" với "" trong C:\Python27\Lib\distutils\cygwinccompiler.py

tức đang Original:

self.set_executables(compiler='gcc -mno-cygwin -O -Wall', 
         compiler_so='gcc -mno-cygwin -mdll -O -Wall', 
         compiler_cxx='g++ -mno-cygwin -O -Wall', 
         linker_exe='gcc -mno-cygwin', 
         linker_so='%s -mno-cygwin %s %s' 
            % (self.linker_dll, shared_option, 
             entry_point)) 

đang Cập nhật:

self.set_executables(compiler='gcc "" -O -Wall', 
         compiler_so='gcc "" -mdll -O -Wall', 
         compiler_cxx='g++ "" -O -Wall', 
         linker_exe='gcc ""', 
         linker_so='%s "" %s %s' 
            % (self.linker_dll, shared_option, 
             entry_point)) 

Bạn sử dụng trình biên dịch GCC nào? Bạn sẽ không gặp vấn đề này nếu bạn sử dụng GCC 3.4.4 nếu không bạn cần phải thay thế chuỗi "-mno-cygwin" bằng dấu ngoặc kép như đã đề cập ở trên, đặc biệt là cho GCC 4.3.7.