@@ -14,21 +14,22 @@ class EmbeddedPython(ConanFile):
14
14
settings = {"os" : ["Windows" ]}
15
15
options = {"pip_packages" : "ANY" }
16
16
default_options = "pip_packages=None"
17
+ exports = "embedded_python_tools.py"
17
18
short_paths = True # some of the pip packages go over the 260 char path limit on Windows
18
19
19
20
def _get_binaries (self ):
20
21
"""Get the binaries from the special embeddable Python package"""
21
22
url = "https://www.python.org/ftp/python/{0}/python-{0}-embed-amd64.zip"
22
- tools .get (url .format (self .pyversion ), md5 = self .md5 )
23
+ tools .get (url .format (self .pyversion ), md5 = self .md5 , destination = "embedded_python" )
23
24
24
25
def _get_headers_and_lib (self ):
25
26
"""We also need headers and the `python3.lib` file to link against"""
26
27
url = "https://www.python.org/ftp/python/{0}/python-{0}-amd64-webinstall.exe"
27
28
tools .download (url .format (self .pyversion ), filename = "tmp\\ installer.exe" )
28
29
self .run ("tmp\\ installer.exe /quiet /layout" )
29
- self .run ("msiexec.exe /a {0}\\ tmp\\ dev.msi targetdir={0}" .format (self .build_folder ))
30
+ dst = os .path .join (self .build_folder , "embedded_python" )
31
+ self .run (f"msiexec.exe /a { self .build_folder } \\ tmp\\ dev.msi targetdir={ dst } " )
30
32
tools .rmdir ("tmp" )
31
- os .remove (self .build_folder + "\\ dev.msi" )
32
33
33
34
def build (self ):
34
35
self ._get_binaries ()
@@ -39,12 +40,15 @@ def build(self):
39
40
40
41
# Enable site-packages, i.e. additional non-system packages
41
42
pyver = "" .join (self .pyversion .split ("." )[:2 ]) # e.g. 3.7.3 -> 37
42
- tools .replace_in_file ("python{}._pth" .format (pyver ), "#import site" , "import site" )
43
+ tools .replace_in_file ("embedded_python/ python{}._pth" .format (pyver ), "#import site" , "import site" )
43
44
44
- target = self .build_folder + "/Lib/site-packages"
45
45
packages = self .options .pip_packages .value
46
46
packages += " setuptools==41.0.1" # some modules always assume it's installed (e.g. pytest)
47
+ target = self .build_folder + "/embedded_python/Lib/site-packages"
47
48
self .run (f'{ sys .executable } -m pip install --no-deps --python-version { pyver } --target "{ target } " { packages } ' )
48
49
49
50
def package (self ):
50
- self .copy ("*" , dst = "embedded_python" , keep_path = True )
51
+ self .copy ("*" , keep_path = True )
52
+
53
+ def package_info (self ):
54
+ self .env_info .PYTHONPATH .append (self .package_folder )
0 commit comments