本文整理汇总了Python中nuitka.Utils.joinpath方法的典型用法代码示例。如果您正苦于以下问题:Python Utils.joinpath方法的具体用法?Python Utils.joinpath怎么用?Python Utils.joinpath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nuitka.Utils
的用法示例。
在下文中一共展示了Utils.joinpath方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: runScons
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def runScons( options, quiet ):
# For the scons file to find the static C++ files and include path. The scons file is
# unable to use __file__ for the task.
os.environ[ "NUITKA_SCONS" ] = getSconsDataPath()
if os.name == "nt":
# On Windows this Scons variable must be set by us.
os.environ[ "SCONS_LIB_DIR" ] = Utils.joinpath( getSconsInlinePath(), "lib", "scons-2.0.1" )
# Also, for MinGW we can avoid the user having to add the path if he used the
# default path or installed it on the same drive by appending to the PATH variable
# before executing scons.
os.environ[ "PATH" ] += r";\MinGW\bin;C:\MinGW\bin"
scons_command = """%(python)s %(binary)s %(quiet)s -f %(scons_file)s --jobs %(job_limit)d %(options)s""" % {
"python" : sys.executable if Utils.python_version < 300 else "python",
"binary" : getSconsBinaryPath(),
"quiet" : "--quiet" if quiet else "",
"scons_file" : Utils.joinpath( getSconsDataPath(), "SingleExe.scons" ),
"job_limit" : Options.getJobLimit(),
"options" : " ".join( "%s=%s" % ( key, value ) for key, value in options.items() )
}
if Options.isShowScons():
Tracing.printLine( "Scons command:", scons_command )
return 0 == os.system( scons_command )
示例2: runScons
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def runScons(options, quiet):
# For the scons file to find the static C++ files and include path. The
# scons file is unable to use __file__ for the task.
os.environ["NUITKA_SCONS"] = getSconsDataPath()
if Utils.getOS() == "Windows":
# On Windows this Scons variable must be set by us.
os.environ["SCONS_LIB_DIR"] = Utils.joinpath(
getSconsInlinePath(),
"lib",
"scons-2.3.0"
)
# Also, for MinGW we can avoid the user having to add the path if he
# used the default path or installed it on the same drive by appending
# to the PATH variable before executing scons.
os.environ["PATH"] += r";\MinGW\bin;C:\MinGW\bin"
scons_command = getSconsBinaryCall()
if quiet:
scons_command.append("--quiet")
scons_command += [
# The scons file
"-f",
Utils.joinpath(getSconsDataPath(), "SingleExe.scons"),
# Parallel compilation.
"--jobs",
str(Options.getJobLimit()),
# Do not warn about deprecations of Scons
"--warn=no-deprecated",
# Don't load "site_scons" at all.
"--no-site-dir",
]
if Options.isShowScons():
scons_command.append("--debug=explain")
# Option values to provide to scons.
for key, value in options.items():
scons_command += [key + "=" + value]
if Options.isShowScons():
Tracing.printLine("Scons command:", " ".join(scons_command))
return 0 == subprocess.call(scons_command)
示例3: copyUsedDLLs
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def copyUsedDLLs(dist_dir, binary_filename, standalone_entry_points):
dll_map = []
for early_dll in detectUsedDLLs(standalone_entry_points):
dll_name = Utils.basename(early_dll)
target_path = Utils.joinpath(
dist_dir,
dll_name
)
# Check that if a DLL has the name name, if it's identical,
# happens at least for OSC and Fedora 20.
if Utils.isFile(target_path):
import filecmp
if filecmp.cmp(early_dll, target_path):
continue
else:
sys.exit("Error, conflicting DLLs for '%s'." % dll_name)
shutil.copy(
early_dll,
target_path
)
dll_map.append(
(early_dll, dll_name)
)
if Options.isShowInclusion():
info("Included used shared library '%s'.", early_dll)
if Utils.getOS() == "Darwin":
# For MacOS, the binary needs to be changed to reflect the DLL
# location in the dist folder.
fixupBinaryDLLPaths(binary_filename, dll_map)
if Utils.getOS() == "Linux":
# For Linux, the rpath of libraries may be an issue.
for _original_path, early_dll in dll_map:
removeSharedLibraryRPATH(
Utils.joinpath(dist_dir, early_dll)
)
for standalone_entry_point in standalone_entry_points[1:]:
removeSharedLibraryRPATH(
standalone_entry_point[0]
)
示例4: _getPython2ExePathWindows
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def _getPython2ExePathWindows():
# Shortcuts for the default installation directories, to avoid going to
# registry at all.
if os.path.isfile(r"c:\Python27\python.exe"):
return r"c:\Python27\python.exe"
elif os.path.isfile(r"c:\Python26\python.exe"):
return r"c:\Python26\python.exe"
# Windows only code, pylint: disable=E0602,F0401
try:
import _winreg as winreg
except ImportError:
import winreg # lint:ok
for search in ("2.7", "2.6"):
for arch_key in 0, winreg.KEY_WOW64_32KEY, winreg.KEY_WOW64_64KEY:
try:
key = winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\Python\PythonCore\%s\InstallPath" % search,
0,
winreg.KEY_READ | arch_key,
)
return Utils.joinpath(winreg.QueryValue(key, ""), "python.exe")
except WindowsError: # lint:ok
pass
示例5: runScons
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def runScons(options, quiet):
# For the scons file to find the static C++ files and include path. The
# scons file is unable to use __file__ for the task.
os.environ["NUITKA_SCONS"] = getSconsDataPath()
if Utils.getOS() == "Windows":
# On Windows this Scons variable must be set by us.
os.environ["SCONS_LIB_DIR"] = Utils.joinpath(
getSconsInlinePath(),
"lib",
"scons-2.3.2"
)
scons_command = getSconsBinaryCall()
if quiet:
scons_command.append("--quiet")
scons_command += [
# The scons file
"-f",
Utils.joinpath(getSconsDataPath(), "SingleExe.scons"),
# Parallel compilation.
"--jobs",
str(Options.getJobLimit()),
# Do not warn about deprecations of Scons
"--warn=no-deprecated",
# Don't load "site_scons" at all.
"--no-site-dir",
]
if Options.isShowScons():
scons_command.append("--debug=explain")
# Option values to provide to scons.
for key, value in options.items():
scons_command += [key + "=" + value]
if Options.isShowScons():
Tracing.printLine("Scons command:", " ".join(scons_command))
return 0 == subprocess.call(scons_command, shell = False)
示例6: getSconsBinaryCall
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def getSconsBinaryCall():
""" Return a way to execute Scons.
Using potentially inline copy if no system Scons is available
or if we are on Windows.
"""
if Utils.isFile("/usr/bin/scons"):
return ["/usr/bin/scons"]
else:
return [getPython2ExePath(), Utils.joinpath(getSconsInlinePath(), "bin", "scons.py")]
示例7: runScons
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def runScons( options, quiet ):
# For the scons file to find the static C++ files and include path. The scons file is
# unable to use __file__ for the task.
os.environ[ "NUITKA_SCONS" ] = getSconsDataPath()
if os.name == "nt":
# On Windows this Scons variable must be set by us.
os.environ[ "SCONS_LIB_DIR" ] = Utils.joinpath( getSconsInlinePath(), "lib", "scons-2.0.1" )
# Also, for MinGW we can avoid the user having to add the path if he used the
# default path or installed it on the same drive by appending to the PATH variable
# before executing scons.
os.environ[ "PATH" ] += r";\MinGW\bin;C:\MinGW\bin"
# Scons is Python2 only, so we need to make the system find a suitable Python binary.
if Utils.python_version < 300:
python_exe = sys.executable
elif os.name == "nt":
if os.path.exists( r"c:\Python27\python.exe" ):
python_exe = r"c:\Python27\python.exe"
elif os.path.exists( r"c:\Python26\python.exe" ):
python_exe = r"c:\Python26\python.exe"
else:
sys.exit( """Error, need to find Python2 executable under C:\\Python26 or \
C:\\Python27 to execute scons which is not Python3 compatible.""" )
else:
python_exe = "python"
scons_command = """%(python)s %(binary)s %(quiet)s --warn=no-deprecated -f %(scons_file)s --jobs %(job_limit)d %(options)s""" % {
"python" : python_exe,
"binary" : getSconsBinaryPath(),
"quiet" : "--quiet" if quiet else "",
"scons_file" : Utils.joinpath( getSconsDataPath(), "SingleExe.scons" ),
"job_limit" : Options.getJobLimit(),
"options" : " ".join( "%s=%s" % ( key, value ) for key, value in options.items() )
}
if Options.isShowScons():
Tracing.printLine( "Scons command:", scons_command )
return 0 == os.system( scons_command )
示例8: __init__
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def __init__(self, *args):
QtGui.QDialog.__init__(self, *args)
ui_dir = Utils.dirname(__file__)
ui_filename = Utils.joinpath(ui_dir, "dialogs", "InspectPythonTree.ui")
uic.loadUi(ui_filename, self)
self.treeview_nodes.setSelectionMode(self.treeview_nodes.SingleSelection)
self.displayed = None
self.source_code = None
self.model = None
self.moving = None
示例9: buildModuleTree
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def buildModuleTree( filename, package, is_top, is_main ):
# Many variables, branches, due to the many cases, pylint: disable=R0912
assert package is None or type( package ) is str
if is_main and Utils.isDir( filename ):
source_filename = Utils.joinpath( filename, "__main__.py" )
if not Utils.isFile( source_filename ):
sys.stderr.write(
"%s: can't find '__main__' module in '%s'\n" % (
Utils.basename( sys.argv[0] ),
filename
)
)
sys.exit( 2 )
filename = source_filename
main_added = True
else:
main_added = False
if Utils.isFile( filename ):
source_filename = filename
source_ref = SourceCodeReferences.fromFilename(
filename = filename,
future_spec = FutureSpec()
)
if is_main:
module_name = "__main__"
else:
module_name = Utils.basename( filename )
if module_name.endswith( ".py" ):
module_name = module_name[:-3]
if "." in module_name:
sys.stderr.write(
"Error, '%s' is not a proper python module name.\n" % (
module_name
)
)
sys.exit( 2 )
if is_main:
result = PythonMainModule(
source_ref = source_ref,
main_added = main_added
)
else:
result = PythonModule(
name = module_name,
package = package,
source_ref = source_ref
)
elif Utils.isDir( filename ) and Utils.isFile( Utils.joinpath( filename, "__init__.py" ) ):
source_filename = Utils.joinpath( filename, "__init__.py" )
if is_top:
source_ref = SourceCodeReferences.fromFilename(
filename = Utils.abspath( source_filename ),
future_spec = FutureSpec()
)
package_name = Utils.splitpath( filename )[-1]
else:
source_ref = SourceCodeReferences.fromFilename(
filename = Utils.abspath( source_filename ),
future_spec = FutureSpec()
)
package_name = Utils.basename( filename )
result = PythonPackage(
name = package_name,
package = package,
source_ref = source_ref
)
else:
sys.stderr.write(
"%s: can't open file '%s'.\n" % (
Utils.basename( sys.argv[0] ),
filename
)
)
sys.exit( 2 )
if not Options.shallHaveStatementLines():
source_ref = source_ref.atInternal()
source_code = readSourceCodeFromFilename( source_filename )
module_body = buildParseTree(
provider = result,
source_code = source_code,
source_ref = source_ref,
#.........这里部分代码省略.........
示例10: getSconsBinaryPath
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def getSconsBinaryPath():
if Utils.isFile( "/usr/bin/scons" ):
return "/usr/bin/scons"
else:
return Utils.joinpath( getSconsInlinePath(), "bin", "scons.py" )
示例11: getSconsInlinePath
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def getSconsInlinePath():
return Utils.joinpath( getSconsDataPath(), "inline_copy" )
示例12: detectBinaryDLLs
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def detectBinaryDLLs(binary_filename, package_name):
result = set()
if Utils.getOS() in ("Linux", "NetBSD"):
# Ask "ldd" about the libraries being used by the created binary, these
# are the ones that interest us.
process = subprocess.Popen(
args = [
"ldd",
binary_filename
],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE
)
stdout, _stderr = process.communicate()
for line in stdout.split(b"\n"):
if not line:
continue
if b"=>" not in line:
continue
part = line.split(b" => ", 2)[1]
if b"(" in part:
filename = part[:part.rfind(b"(")-1]
else:
filename = part
if not filename:
continue
if Utils.python_version >= 300:
filename = filename.decode("utf-8")
result.add(filename)
elif Utils.getOS() == "Windows":
depends_exe = getDependsExePath()
env = os.environ.copy()
path = env.get("PATH","").split(";")
path += sys.path
if package_name is not None:
for element in sys.path:
candidate = Utils.joinpath(element, package_name)
if Utils.isDir(candidate):
path.append(candidate)
env["PATH"] = ";".join(path)
subprocess.call(
(
depends_exe,
"-c",
"-ot%s" % binary_filename + ".depends",
"-f1",
"-pa1",
"-ps1",
binary_filename
),
env = env,
)
inside = False
for line in open(binary_filename + ".depends"):
if "| Module Dependency Tree |" in line:
inside = True
continue
if not inside:
continue
if "| Module List |" in line:
break
if "]" not in line:
continue
# Skip missing DLLs, apparently not needed anyway.
if "?" in line[:line.find("]")]:
continue
dll_filename = line[line.find("]")+2:-1]
assert Utils.isFile(dll_filename), dll_filename
# The executable itself is of course excempted.
if Utils.normcase(dll_filename) == \
Utils.normcase(Utils.abspath(binary_filename)):
continue
dll_name = Utils.basename(dll_filename).upper()
# Win API can be assumed.
if dll_name.startswith("API-MS-WIN-") or dll_name.startswith("EXT-MS-WIN-"):
#.........这里部分代码省略.........
示例13: copyUsedDLLs
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def copyUsedDLLs(dist_dir, binary_filename, standalone_entry_points):
# This is terribly complex, because we check the list of used DLLs
# trying to avoid duplicates, and detecting errors with them not
# being binary identical, so we can report them. And then of course
# we also need to handle OS specifics, pylint: disable=R0912,R0914
dll_map = []
used_dlls = detectUsedDLLs(standalone_entry_points)
for dll_filename1, sources1 in tuple(iterItems(used_dlls)):
for dll_filename2, sources2 in tuple(iterItems(used_dlls)):
if dll_filename1 == dll_filename2:
continue
# Colliding basenames are an issue to us.
if Utils.basename(dll_filename1) != Utils.basename(dll_filename2):
continue
# May already have been removed earlier
if dll_filename1 not in used_dlls:
continue
if dll_filename2 not in used_dlls:
continue
dll_name = Utils.basename(dll_filename1)
if Options.isShowInclusion():
info(
"""Colliding DLL names for %s, checking identity of \
'%s' <-> '%s'.""" % (
dll_name,
dll_filename1,
dll_filename2,
)
)
# Check that if a DLL has the same name, if it's identical,
# happens at least for OSC and Fedora 20.
import filecmp
if filecmp.cmp(dll_filename1, dll_filename2):
del used_dlls[dll_filename2]
continue
sys.exit(
"""Error, conflicting DLLs for '%s' \
(%s used by %s different from %s used by %s).""" % (
dll_name,
dll_filename1,
", ".join(sources1),
dll_filename2,
", ".join(sources2)
)
)
for dll_filename, sources in iterItems(used_dlls):
dll_name = Utils.basename(dll_filename)
target_path = Utils.joinpath(
dist_dir,
dll_name
)
shutil.copy(
dll_filename,
target_path
)
dll_map.append(
(dll_filename, dll_name)
)
if Options.isShowInclusion():
info(
"Included used shared library '%s' (used by %s)." % (
dll_filename,
", ".join(sources)
)
)
if Utils.getOS() == "Darwin":
# For MacOS, the binary needs to be changed to reflect the DLL
# location in the dist folder.
fixupBinaryDLLPaths(binary_filename, dll_map)
if Utils.getOS() == "Linux":
# For Linux, the rpath of libraries may be an issue.
for _original_path, dll_filename in dll_map:
removeSharedLibraryRPATH(
Utils.joinpath(dist_dir, dll_filename)
)
for standalone_entry_point in standalone_entry_points[1:]:
removeSharedLibraryRPATH(
standalone_entry_point[0]
)
示例14: decideModuleTree
# 需要导入模块: from nuitka import Utils [as 别名]
# 或者: from nuitka.Utils import joinpath [as 别名]
def decideModuleTree(filename, package, is_shlib, is_top, is_main):
# Many variables, branches, due to the many cases, pylint: disable=R0912
assert package is None or type( package ) is str
if is_main and Utils.isDir( filename ):
source_filename = Utils.joinpath( filename, "__main__.py" )
if not Utils.isFile( source_filename ):
sys.stderr.write(
"%s: can't find '__main__' module in '%s'\n" % (
Utils.basename( sys.argv[0] ),
filename
)
)
sys.exit( 2 )
filename = source_filename
main_added = True
else:
main_added = False
if Utils.isFile( filename ):
source_filename = filename
source_ref = SourceCodeReferences.fromFilename(
filename = filename,
future_spec = FutureSpec()
)
if is_main:
module_name = "__main__"
else:
module_name = Utils.basename( filename )
if module_name.endswith( ".py" ):
module_name = module_name[:-3]
if is_shlib:
module_name = module_name.split(".")[0]
if "." in module_name:
sys.stderr.write(
"Error, '%s' is not a proper python module name.\n" % (
module_name
)
)
sys.exit( 2 )
if is_shlib:
result = PythonShlibModule(
name = module_name,
source_ref = source_ref,
package_name = package,
)
elif is_main:
result = PythonMainModule(
source_ref = source_ref,
main_added = main_added
)
else:
result = PythonModule(
name = module_name,
package_name = package,
source_ref = source_ref
)
elif Importing.isPackageDir(filename):
if is_top:
package_name = Utils.splitpath(filename)[-1]
else:
package_name = Utils.basename(filename)
source_filename = Utils.joinpath(filename, "__init__.py")
if not Utils.isFile( source_filename ):
assert Utils.python_version >= 330, source_filename
source_ref, result = createNamespacePackage(
package_name = package_name,
module_relpath = filename
)
source_filename = None
else:
source_ref = SourceCodeReferences.fromFilename(
filename = Utils.abspath( source_filename ),
future_spec = FutureSpec()
)
result = PythonPackage(
name = package_name,
package_name = package,
source_ref = source_ref
)
else:
sys.stderr.write(
"%s: can't open file '%s'.\n" % (
Utils.basename( sys.argv[0] ),
filename
#.........这里部分代码省略.........