사이톤의 setup.py 에서 파이썬 3 소스를 지정하는 방법은 무엇입니까?
저는 이 튜토리얼 http://docs.cython.org/src/tutorial/cython_tutorial.html#cython-hello-world 에 따라 싸이톤에서 "헬로 월드" 프로그램을 하려고 합니다.
내가 만든helloworld.pyx
print("Hello World")
그리고.setup.py
:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("helloworld.pyx")
)
튜토리얼에서와 같이 파이썬 2가 아닌 파이썬 3이 내 소스임을 지정하기 위해 setup.py 을 어떻게 변경할 수 있습니까?명령줄에서 "cython" 명령을 호출하면 다음 명령을 수락합니다.-3
선택.하지만 만약 내가 컴파일을 한다면,python setup.py build_ext --inplace
튜토리얼에 나와 있는 것처럼, 파이썬 3 소스를 어떻게 지정합니까?Hello World 프로그램에는 큰 문제가 되지 않을 수도 있지만, 실제 프로젝트에 싸이톤을 사용하기 시작하면 문제가 될 것입니다.
옵션으로 통과할 수 있습니다.cythonize
-의 기능setup.py
-script:
ext_modules = cythonize(
extensions,
compiler_directives={'language_level' : "3"} # or "2" or "3str"
)
다른 가능한 구문은 다음과 같습니다.
ext_modules = cythonize(extensions, language_level = "3")
위의 내용이 추가하는 것보다 더 편리할 수 있습니다.
#cython: language_level=3
프로젝트의 모든 pyx 파일에. Cython 0.29 이후로 경고가 있기 때문에 필요할 수 있습니다.language_level
명시적으로 설정되지 않음:
/Main.py:367 : 미래 경고:Cython 지시어 'language_level'이 설정되지 않았습니다. 지금은 2를 사용합니다(Py2).이 내용은 이후 릴리스에서 변경됩니다!파일: XXXXXX.pyx
tree = Parsing.p_module(s, pxd, full_module_name)
왜냐면language_level
세계적인 환경, 장식가입니다.
cimport cython
@cython.language_level("3")
def do_something():
pass
사이톤화되지도 않을 겁니다
컴파일에 대한 공식 문서에 따르면 Python 언어 수준은 파일 상단에 다음과 같은 특수 헤더 주석을 통해 지시문을 사용하여 지정할 수 있습니다.
#!python
#cython: language_level=3
setup.py 에는 이를 명시할 방법이 없는 것 같습니다.따라서 Cython 파일이 많은 경우 각 파일에 컴파일러 지시문을 추가해야 합니다.제가 지금까지 만난 유일한 상황에서 이 지침이 필요한 것은 당신의 샘플과 같이 print()에 대한 것이고, 저는 싸이톤을 광범위하게 사용했습니다.
이 예제에서와 같이 확장명이 있는 setup.py 을 사용하는 경우
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("mymodule1", ["mymodule1.py"]),
Extension("mymodule2", ["mymodule2.py"]),
]
setup(
name = 'My Program Name',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
그런 다음 language_level 지시어를 적용하려면 다음 스니펫을 추가해야 합니다(설정 전에(...), 감사 코드맨48).
for e in ext_modules:
e.cython_directives = {'language_level': "3"} #all are Python-3
언급URL : https://stackoverflow.com/questions/34603628/how-to-specify-python-3-source-in-cythons-setup-py
'programing' 카테고리의 다른 글
Xcode 파생 데이터 폴더의 내용을 안전하게 삭제할 수 있습니까? (0) | 2023.06.04 |
---|---|
Google Colab의 연결 해제를 방지하려면 어떻게 해야 합니까? (0) | 2023.06.04 |
클래스가 있는 첫 번째 요소에 대한 CSS 선택기 (0) | 2023.06.04 |
루비 / 레일즈: 시간으로 변환하거나 정수에서 시간을 얻습니까? (0) | 2023.06.04 |
루비는 모든 단어의 첫 글자를 대문자로 표시합니다. (0) | 2023.06.04 |