2009-12-28 5 views
0

나는 필요에 따라 환경 CFLAGS를 설정해야 파이썬 프로그램을 쓰고 있어요.방법 "수출 CFLAGS = '내 -flags - 여기가'

나는 몇 가지를 수행 할 하위 프로세스 모듈을 사용하고 있습니다 작업은, 그러나, 나는이 스크립트는 먼저 몇 가지 코드를 컴파일 한 후 CFLAGS 설정합니다

. 문제는이 일을 올바른 방법입니다 확실하지 않다, 그래서 CFLAGS는 코드를 컴파일하는 동안 꼼짝 할 필요가있다.

내 시스템에 기본값 인 "os.environ['CXXFLAGS']"이 있다는 것을 알고 있습니다. 제 질문은 단지 os.environ['CXXFLAGS'] 값을 설정해야합니까? 코드를 쌓아 올리거나 다른 방법으로해야합니까?

답변

0

os.environ['CXXFLAGS']을 수정하여 환경에 설정하면 효과가 있습니다. 그러나, 나는 항상 CXXFLAGS./configure에 추가 합격 한 방법은, 명령 줄에 전달하는 것입니다 예 :

cmd = [ 
    './configure', 
    'CXXFLAGS=-O2 -march=i586 -mtune=i686', 
] 
subprocess.Popen(cmd) 

이 방법을 수행하면 환경에 CXXFLAGS을 설정하거나 명시 적으로 전달할 필요가 없습니다 (autotools가 사용자 정의 CXXFLAGS을 포함하도록 Makefile을 작성합니다).

+0

이것은 익숙한 방법입니다. 그러나 이것은 파이썬에서 처음 수행 한 것이고, 문제는 내가 이렇게하면 configure가 실패하고 '-march'가 유효한 옵션이 아니라는 것입니다 구성합니다. –

+1

일부 인용문 문제가있을 수 있습니다. shell = False 인수 (기본값)를 사용하여 subprocess.Popen과 위에서 설명한 것처럼 인수를 전달하십시오. –

1

당신은 파이썬 프로세스의 환경을 수정하지 않고이 작업을 수행 할 수 있습니다 알려 주시기 바랍니다.

# Make a copy of the environment and modify that. 
myenv = dict(os.environ) 
myenv["CXXFLAGS"] = "-DFOO" 

# Pass the modified environment to the subprocess. 
subprocess.check_call(["make", "install"], env=myenv) 

documentation for Python's subprocess module을 참조하십시오.

+0

단순히'os.environ [ 'CXXFLAGS']'을 수정하는 것은 어떻습니까? 이 순서대로 수행하면 os.environ [ 'CXXFLAGS'] = "-O2 -march = i586 -mtune = i686" subprocess.Popen ([ './ configure', '--prefix =/usr '], stdout = subprocess.PIPE, stderr = subrprocess.STDOUT) subprocess.Popen ('make ', stdout = subprocess.PIPE, stderr = subrprocess.STDOUT)' 작동합니까? –

+0

잘 작동합니다. –