我管理一个用python编写的开源项目(Remix,源代码可用).我们要求用户运行python setup.py install来安装该软件.最近我们添加了一个已编译的C++包(SoundTouch的一个端口 - 转到源代码中的trunk/externals来查看它.)我们希望安装基本Remix库的setup.py文件也可以安装pysoundtouch14库.
但是,我们不希望用户必须在其系统上使用gcc或msvc工具链.我们为常见平台(linux-i386,windows,mac 10.5和10.6)预编译了二进制文件,转到trunk/externals/pysoundtouch14/build来查看它们.我希望没有安装gcc或msvc的用户可以运行pysoundtouch14的setup.py,它会检测到我们预建的二进制文件的存在,并将它们复制到正确的位置(/Library/Python/2.5/site-packages例如.)但这不会发生.例如,在一个新的10.5系统上,setup.py抱怨没有安装gcc,即使它需要安装的.so已经内置在build /文件夹中.
所以我有两个直接的问题:
我似乎无法弄清楚如何将已编译的.pyc模块导入到我的代码中,以便我可以在我的主脚本中使用它.这甚至可能吗?
我用git和GitHub维护一个文档.源文件是Pdflatex的TEX文件和用于编译的一些其他文件(如图).这些文件是版本化的.编译后,他们会生成一个PDF文件(解释我项目的所有细节).
无需对生成的PDF文件进行版本控制,因为它是从源构建的.编译PDF的版本控制将成为资源的一部分.
但是,我希望检查我的GitHub存储库的人可以立即读取最后编译的PDF,这样他们就不需要自己编译了.想要快速浏览的人会欣赏这种可能性,不是吗?
如何用GitHub完成?
我构建了数据库驱动的网站.以前我使用过Perl或PHP和MySQL.
现在我正在开始一个大型的新项目,我希望以能够产生响应速度最快的网站的方式进行.
我在这里看到了几个页面,其中有关如何优化PHP的问题受到各种版本的批评,"因为它是一种解释性语言并不会产生那么大的差异,所以不值得花时间去优化PHP."
我还听过关于编译语言和解释语言的好处的各种讨论(特别是SO播客),似乎使用编译语言来提供网站而不是解释语言符合我的利益.
这在网络环境中甚至可能吗?如果是这样,那么合理的语言选择是什么?
除了速度之外,我认为可以在编译时发现错误而不必调试网站.这是合情合理的吗?
我搜索编译器存在的编程语言,并支持自修改代码.我听说Lisp支持这些功能,但我想知道是否有更多具有这些功能的C/C++/D-Like语言.
澄清我的意思:
我希望能够以某种方式在运行时访问程序代码并对其应用任何类型的更改,即删除命令,添加命令,更改它们.好像我有我的程序的AstTree.当然,我不能用编译语言拥有那棵树,所以它必须做得与众不同.编译需要将自修改命令转换为它们的二进制等效修改,以便它们在运行时与编译的代码一起工作.
我不想依赖于VM,这就是我的意思与编译:)
lisp reflection programming-languages compiled self-modifying
我已经看到可以将编译的方法一起添加.
Expression<Func<Customer, bool>> ln = c => c.lastname.Equals(_customer.lastName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fn = c => c.firstname.Equals(_customer.firstName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fdob = c => c.DOB.ToString("yyyyMMdd").Equals(_customer.DOB.ToString("yyyyMMdd"));
var filter = ln.Compile() + fn.Compile() + fdob.Compile();
Run Code Online (Sandbox Code Playgroud)
这样做有意义吗?
我打算使用过滤器代替lambda表达式来过滤客户的存储库:
IEnumerable<Customer> customersFound = _repo.Customers.Where(filter);
Run Code Online (Sandbox Code Playgroud)
根据业务逻辑,我可能会或可能不会将三个编译的方法一起添加,但是选择,并可能添加更多编译的方法.
任何人都可以解释是否将它们组合在一起会构建查询字符串吗?有人有更好的建议吗?
我可以链接"Where"语句并使用常规的lambda表达式,但我对你可能从编译方法中获得的内容感兴趣并添加它们!
我有一个带有python包的项目和一个已编译的组件.目前的目录布局是:
<project>
foo/
foo/__init__.py
foo/...
src/
src/c_foo.c
tests/
tests/test_foo.py
setup.py
Run Code Online (Sandbox Code Playgroud)
构建项目时,distutils会创建一个build/lib我添加PYTHONPATH或安装到虚拟环境中的目录.结果结构如下:
<project>
build/lib
build/lib/foo/__init__.py
build/lib/foo/c_foo.so
Run Code Online (Sandbox Code Playgroud)
问题在于,如果我从项目根目录启动python解释器会话,从项目根目录等运行测试,它会选择源树而不是构建树.
我找到了几个现有的解决方案:
将python源放在一个单独的目录下,例如.lib/foo,modules/foo等缺点就是额外的目录级别的所有源文件和不一致与不具有编译的扩展,因此有自己的Python包的根目录下的项目.
将包保留在根目录中,这意味着不得不chdir离开项目根目录(例如,进入tests /目录),以便python解释器不会看到源包(通过构建脚本或手动).
使用不同的名称(例如.foo-module或foo-lib)将包保留在根中,并使用适当的package_dir={'foo':'lib-foo'}行setup.py.这是pt的变种.1我没有额外级别的目录层次结构,这几乎是一回事.
将包保留在根目录中并使用setup.py build_ext --inplace,但这会污染源树.
这两种情况都引入了开销与普通python项目,其中可以从源树中修改/运行代码.我非常希望听到大家对上述优缺点的看法以及您为项目使用的特定方法.
#region/#endregion指令"描述"是否已编译到.NET中的.EXE中?我理解评论不是,但我经常在一个区域内组合代码组并给它一个有用的描述.
我想确保在我的编译代码中看不到这些描述.(我不是在寻找混淆信息.不过,谢谢.)
有prolog的编译器,但其他网站说语言本身是一种解释语言.如果prolog真的是一种解释性语言,我很困惑.有人可以澄清一下该语言究竟是什么吗?编译语言或口译语言?
我正在增强一个客户,这是一个更大的项目的一部分.由于速度不足,我被迫切换到CNI,因此我必须使用GNU-gcj编译器生成本机代码(gnu 4.6.3).
编译和链接工作正常(感谢-findirect-dispatch标志),我没有任何问题执行输出.但是当涉及到客户端和服务器之间的通信时,客户端会立即断开连接.原因:
[XStreamClient Reader] WARN - 客户端断开连接(例外:com.thoughtworks.xstream.io.StreamException:无法创建XmlPullParser)
(此Exeption仅出现在客户端的gcj编译版本中.当我使用java解释器运行代码时 - 事情运行良好(但速度太慢^^)) - >具有挑战性的部分是我无法检索源代码发生此异常的代码,因为它位于客户端使用的预编译(Java类文件)库中.(我无法联系该图书馆的作者)
我想这个库会调用XppReader然后尝试创建一个XmlPullParser类并失败.
我通过解压缩它们并编译创建的*.class文件然后链接目标文件来绑定XStream(vers.1.4.3)库(以及其他所需的*.jars).这似乎也适用于所有其他图书馆.(我的操作系统= Ubuntu)
我已经做了什么来克服这个问题:我搜索了XStream/XmlPullParser和gcj,并用不同的版本替换了"xmlpull" - 和"kxml2"文件.但没有任何效果.你们中的任何人都知道可能是什么解决方案吗?
我发现XmlPullParser创建失败的原因是XmlPullParserFactory.newInstance函数无法找到带有/services/org.xmlpull.v1.XmlPullParserFactory文件的META-INF目录.这是因为我只编译并链接了*.jar的*.class文件.因此,只要我找到了将META-INF目录链接到该函数可以找到并访问它的可执行文件的方法,就应该解决问题.你们中的任何人都知道这样做的方法吗?