2016-07-13 1 views
1

Maple을 사용하여 Python을 호출하는 C 공유 라이브러리를 호출하려고합니다. 보통 main에 argc와 argv를 설정해야하지만 이것은 공유 라이브러리를 호출하는 다른 프로그램 (Maple)이므로 main 함수가 없거나 하나도 있어야합니까? 그렇다면 어떻게 argc와 argv를 설정해야합니까?외부 프로그램 호출 용 Argc 및 argv C 공유 라이브러리

Traceback (most recent call last): 
    File "/home/shiningsun/maple/rhf.py", line 9, in function 
    mol.build() 
    File "/share/apps/pyscf/v11/pyscf/gto/mole.py", line 1638, in build 
    return self.build_(*args, **kwargs) 
    File "/share/apps/pyscf/v11/pyscf/gto/mole.py", line 1533, in build_ 
    _update_from_cmdargs_(self) 
    File "/share/apps/pyscf/v11/pyscf/gto/mole.py", line 2297, in _update_from_cmdargs_ 
    opts = cmd_args.cmd_args() 
    File "/share/apps/pyscf/v11/pyscf/gto/cmd_args.py", line 25, in cmd_args 
    (opts, args_left) = parser.parse_args() 
    File "/share/apps/anaconda2/lib/python2.7/optparse.py", line 1382, in parse_args 
    rargs = self._get_args(args) 
    File "/share/apps/anaconda2/lib/python2.7/optparse.py", line 1364, in _get_args 
    return sys.argv[1:] 
AttributeError: 'module' object has no attribute 'argv' 
+0

어떤 인수를 전달 하시겠습니까? – tynn

+0

그냥'argc'와'argv'입니다. 왜냐하면 파이썬 측은 이것들을 실행해야하기 때문입니다. – chemicaholic

+0

더 좋아, 어디에서 가져 오는거야? 메이플이 제공합니까? 그들은 의미있는 것을 담고 있어야합니까? – tynn

답변

1

cmd_args 모듈은 구문 분석 verbose, quiet, outputmax-memory 인수 :

이 내가 가진 오류입니다. output 만 관련 있다고 가정하면 바로 다음에 PySys_SetArgv으로 값을 설정할 수 있습니다.

char **argv = {"", "-o", "path/to/output/file"}; 
PySys_SetArgv(3, argv); 
+0

사실 나는 파이썬 안에서'sys.argv'에 임의의 무작위 할당을 시도해 보았습니다. 그러나 내가 아직 이해하지 못하는 무언가가 있습니다. 예를 들어 Maple 끝에서 실행되고 Maple에서도 결과를 얻고 싶기 때문에 명령 줄 인수가 없습니다. 이 경우 argv가 무엇이되어야합니다. – chemicaholic

+0

출력 파일을 다시 읽으십시오. 아니면 출력 파일을 정의하지 말고'stdout'을 리디렉션하십시오. – tynn

관련 문제