是否可以使用python27.dll从CLI运行.py脚本? 我试过这个:
/* Custom dropdown */
.custom-dropdown {
position: relative;
display: inline-block;
width:150px;
}
.custom-dropdown select {
-webkit-appearance: none;
}
.custom-dropdown::before,
.custom-dropdown::after {
content: "";
position: absolute;
pointer-events: none;
}
.custom-dropdown::after { /* Custom dropdown arrow */
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 5px solid #000;
right: 60px;
top: calc(50% - 2.5px);
z-index: 3;
}
.custom-dropdown::before { /* Custom dropdown arrow cover */
position: absolute;
right: 0px;
height: 34px;
z-index: 9999;
content: 'mm';
background: #afa9a9;
border-left: 1px solid;
top: 0px;
padding-top: 6px;
padding-left: 10px;
padding-right: 10px;
font-weight: bold;
}
.custom-dropdown::after {
color: rgba(0,0,0,.4);
}
但似乎没有用。
情况是我可以安装我想要的所有python模块,但是没有可执行文件,所以我无法安装完整的Python。
答案 0 :(得分:2)
你不能这样做。为什么呢?
Windows包含一个名为rundll32.exe
的命令行实用程序,它允许您使用以下语法调用从32位DLL导出的函数:
RUNDLL.EXE <dllname>,<entrypoint> <optional arguments>
但是,根据MSDN:
Rundll32程序不允许您从任何DLL调用任何导出的函数
[..]
程序只允许您从DLL中调用明确写入的函数来调用它们。
dll
必须导出以下原型才能支持它:
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst,
LPSTR lpszCmdLine, int nCmdShow);
由于python.dll
没有导出这样的入口点,你必须在C / C ++中编写一个包装器应用程序来加载dll并使用它,例如(这里是来自这样一个应用程序的片段):
// load the Python DLL
#ifdef _DEBUG
LPCWSTR pDllName = L"python27_d.dll" ;
#else
LPCWSTR pDllName = L"python27.dll" ;
#endif
HMODULE hModule = LoadLibrary( pDllName ) ;
assert( hModule != NULL ) ;
// locate the Py_InitializeEx() function
FARPROC pInitializeExFn = GetProcAddress( hModule , "Py_InitializeEx" ) ;
assert( pInitializeExFn != NULL ) ;
// call Py_InitializeEx()
typedef void (*PINITIALIZEEXFN)( int ) ;
((PINITIALIZEEXFN)pInitializeExFn)( 0 ) ;
FILE* fp ;
errno_t rc = fopen_s( &fp , pFilename , "r" ) ;
assert( rc == 0 && fp != NULL ) ;
[..] // go on to load PyRun_SimpleFile
if ( 0 == PyRun_SimpleFile( fp , pFilename )
printf("Successfully executed script %s!\n", pFilename);