最近我正在尝试使用 pyinstaller 从我的 Python 脚本创建一个可执行文件。一切都按预期进行。我测试了两个选项: --onefile,它需要相当长的时间(例如 20-30 秒)才能启动,因为它将所有内容解压到临时目录中。--onedir 选项启动速度要快得多(4 秒),但使用起来不太舒服。当我将 exe 文件移出该目录时,程序不再工作。我的问题是:是否有可能使exe文件指向这个目录位置?我想将所有 pyinstaller 文件保留在一个位置,并允许用户将 exe 文件放在他们想要的任何位置。感谢帮助。
ffmpeg我有一个可执行文件/home/juping/。如果我/home/juping/使用命令将工作目录更改为,我可以通过运行来cd /home/juping/运行可执行文件。如果我不更改工作目录,我仍然可以通过完整路径运行可执行文件吗?我尝试过,但没有成功。ffmpeg./ffmpeg.//home/juping/ffmpeg
我现在知道如何使用 APL 解释器,但我对如何将 APL 写入文件然后运行该文件感到非常困惑。我目前使用RIDE编写 Dyalog APL 。我现在想做的是:
大多数在线文档都提到“APL 会话”,这让我觉得可能存在一些类似 Smalltalk 的东西,人们只能分发“实时图像”或类似的东西。如果是这样的话,我有一组不同的问题:
总的来说,我对如何用APL编写软件感到很困惑!
我使用的是 Ubuntu,一般来说我想以 Linux 为目标。Windows/macOS 支持将是一个优势,但我目前对 Linux 支持感兴趣。
executable software-distribution apl dyalog command-line-arguments
我知道可以将可执行文件嵌入到 Golang 可执行文件中并运行它们,或者使用Yaegi等项目从字符串运行 Golang 代码,但是是否可以运行存储为变量的二进制文件而不将其写入文件,作为子项过程?二进制文件已经作为变量存在于内存中,因此是否可以以某种方式执行它?
如果我没有记错的话,可执行内存和数据内存之间存在差异,那么这会阻止执行此操作吗?
我的问题的原因是我正在编写一个 RAT/payload dropper 作为学习 Go(lang) 的项目,并希望使其尽可能模块化,包括无文件更新和二进制(也是无文件)有效负载。
编辑:欢迎任何解决方案,但跨平台解决方案是首选。
EDIT2:根据这个SO答案,这在C++中是不可能/非常困难的。看来,造成这种情况的主要原因是动态链接库。由于 Golang 是静态链接的,这会更容易吗?
|-aseCswk2
|-app
|-Main.hs
|-src
|-Libs.hs
|-test
|-Spec.hs
|-aseCswk2.cabal
|-Setup.hs
|-package.yaml
...
Run Code Online (Sandbox Code Playgroud)
所以我有一个 Haskell 项目,它使用 Stack 构建系统,并如上面的示例所示。如果我使用$ stack test,那么我的 Libs.hs 文件中的函数将使用 Spec.hs 文件中的案例进行测试。如果我使用$ stack build,那么我的文件会成功构建,并且我可以使用里面的功能$ stack ghci。
但是,我想创建 Main.hs 文件的可执行文件,但不知道这是如何实现的。我尝试$ ghc Main.hs在应用程序目录中使用它进行编译,但收到错误消息“无法加载 Lib 的接口”,即使我已将其作为导入包含在内。我也尝试过$stack build aseCswk2:exe:aseCswk2-exe,但没有.o创建可运行的文件。
我正在寻求了解底层计算。我注意到我编译的二进制文件比我想象的要大得多。所以我尝试构建尽可能最小的 c 程序,而不使用任何 stdlib 代码,如下所示:
void _start()
{
while(1) {};
}
Run Code Online (Sandbox Code Playgroud)
gcc -nostdlib -o minimal minimal.c
当我反汇编二进制文件时,它准确地显示了我所期望的内容,即三行汇编代码中的确切代码。
$ objdump -d minimal
minimal: file format elf64-x86-64
Disassembly of section .text:
0000000000001000 <_start>:
1000: 55 push %rbp
1001: 48 89 e5 mov %rsp,%rbp
1004: eb fe jmp 1004 <_start+0x4>
Run Code Online (Sandbox Code Playgroud)
但我的实际可执行文件大小仍然是 13856 字节。到底是什么,让它变得这么大?该文件中还有什么内容?操作系统是否需要超过这 6 字节的机器代码?
编辑 #1:
的输出size是:
$ size -A minimal
minimal :
section size addr
.interp 28 680
.note.gnu.build-id 36 708
.gnu.hash 28 744
.dynsym 24 776
.dynstr 1 …Run Code Online (Sandbox Code Playgroud) 我的 Android 应用程序包含一组可执行文件,这些可执行文件在首次运行时提取到应用程序目录 (/data/data/%package%/)。如果针对 Android 28 ( targetSdkVersion),它工作得很好。自 2020 年 11 月 2 日起,Google Play 不允许使用它,所有应用程序都必须定位到 29。因此它因权限异常而停止工作。
现在可执行文件应该放在哪个目录中?
附言。一些类似的应用程序也有同样的问题。
我正在学习 Pyomo 并尝试使用 ipopt 来解决示例问题。但最初,我已经安装了软件包,然后它总是显示没有找到 ipopt 。之后我重新安装了很多次,现在显示
'''WARNING: Could not locate the 'ipopt' executable, which is required for solver
ipopt
---------------------------------------------------------------------------
ApplicationError Traceback (most recent call last)
<ipython-input-2-2e55f87657f9> in <module>
1 model.N=50
2 instance = model.create_instance()
----> 3 results = opt.solve(instance) # solves and updates instance
D:\Anacondo\lib\site-packages\pyomo\opt\base\solvers.py in solve(self, *args, **kwds)
514 """ Solve the problem """
515
--> 516 self.available(exception_flag=True)
517 #
518 # If the inputs are models, then validate that they have been
D:\Anacondo\lib\site-packages\pyomo\opt\solver\shellcmd.py in available(self, exception_flag) …Run Code Online (Sandbox Code Playgroud) 我需要从包含多个文件夹和文件的 python 项目生成可执行文件。我尝试使用库cx_Freeze,但仅适用于单个文件项目。
你能告诉我该怎么做吗?
我在 GitLab 中有一个 Python 项目,我想创建一个管道,每次将更改推送到项目时,它都会使用 PyInstaller 创建一个新的可执行文件。
我怎样才能实现这个目标?使用 YAML 脚本?